Core Spotlight的使用

新的CoreSpotlight(framework)是iOS9提供的一组新的API来帮助你建立起你的应用中的索引。CoreSpotlight是用来处理用户数据的比如:文档,照片以及其他类型的由用户产生的内容。

xcode7.0 之后推出的功能

Core Spotlight的作用:

在我看来他就是使你的app变得高大上,以前只能搜索app名字,现在只要你导入CoreSpotlight/CoreSpotlight.h之后将你想要给别人查询的字段显示就要用它这个类库去操作,如下:

- (void)spotLightIndexing {

NSString *path = [[NSBundle mainBundle] pathForResource:

@"data" ofType:@"plist"];

NSArray *plistArray = [[NSArray alloc] initWithContentsOfFile:path];

[plistArray enumerateObjectsUsingBlock:^(NSDictionary * _Nonnull dict, NSUInteger idx, BOOL * _Nonnull stop) {

CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage];

NSString *title = [dict objectForKey:@"title"];

attributeSet.title = title;

attributeSet.contentDescription = [NSString stringWithFormat:@"%@的描述,跟微博@iOS程序犭袁 是好朋友",title];

attributeSet.keywords = @[ title ];

UIImage *image = [UIImage imageNamed:[dict objectForKey:@"image_name"]];

NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

attributeSet.thumbnailData = imageData;

// Create a searchable item, specifying its ID, associated domain, and the attribute set you created earlier.

CSSearchableItem *item;

NSString *identifier = [NSString stringWithFormat:@"%@",attributeSet.title];

item = [[CSSearchableItem alloc] initWithUniqueIdentifier:identifier domainIdentifier:@"com.example.apple_sample.theapp.search" attributeSet:attributeSet];

// Index the item.

[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler: ^(NSError * __nullable error) {

NSLog(@"Search item indexed");

}];

}];

}

这里我们只要在苹果那个spotlight中搜索那个title 或者img字段都可以,只要执行了苹果会给你打包好的,我们不用管

执行下程序然后到Spotlight查看是否有保存进去

如果没保存进去不要紧,尝试重启下模拟器再到Spotlight中查看应该就有了。这应该事Xcode的一个bug

你可能感兴趣的:(Core Spotlight的使用)