新的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