【Objective-C】NSPredicateの多次元配列へのアクセスしつつの「絞り込み」「あいまい検索」について【Xcode10.2対応】

こういう人に向けて発信しています。
・NSPredicateのフィルタリングについて学びたい人
・多次元配列と化したDictionaryの値を取り出してNSPredicateしたい人
・Objective-C中級者

コード(Objective-C)

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController{
    UIView *view;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self kanjiParadicate];
    [self paradicate];
}

- (NSArray *)array
{
    
    return @[@{@"children":@{@"name1":@"Tokyo",
                         @"name2":@"とうきょう",
                         @"name3":@"東京"},
               @"hiraganaName":@"とうきょう",
               @"kanjiName":@"東京"},
             @{@"name":@"Osaka",
               @"hiraganaName":@"おおさか",
               @"kanjiName":@"大阪"}];
}

-(void)paradicate{
    NSArray *fruitArray = [self array];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K LIKE %@",@"children.name1",[NSString stringWithFormat:@"*%@*",@"okyo"]];
    NSArray *filterArray = [fruitArray filteredArrayUsingPredicate: predicate];
    NSLog(@"%@",filterArray);

}

-(void)kanjiParadicate{
    NSArray *fruitArray = [self array];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K CONTAINS %@",@"children.name1",[NSString stringWithFormat:@"Tokyo"]];
    NSArray *filterArray = [fruitArray filteredArrayUsingPredicate: predicate];
    NSLog(@"%@",filterArray);

}
@end

特記事項

@Kに@"childeren.name1"と入れてあげるのが大事でしたね。

いいなと思ったら応援しよう!