【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"と入れてあげるのが大事でしたね。