什么是CoreSpotlight?就是在IOS9下。让用户在下拉的搜索页面里能够搜索到你的应用。
#import <Foundation/Foundation.h> @interface IOS9SearchAPIUtil : NSObject +(IOS9SearchAPIUtil *)sharedInstance; -(void)addSearchItemsArray:(NSArray *)array; @end
#import "IOS9SearchAPIUtil.h" #import <CoreSpotlight/CoreSpotlight.h> #import <MobileCoreServices/MobileCoreServices.h> #import "NSString+Wrapper.h" #import <UIKit/UIKit.h> #define IOS9SearchAPIUtil_domainIdentifier @"com.searchapi.shows" @implementation IOS9SearchAPIUtil +(IOS9SearchAPIUtil *)sharedInstance{ static IOS9SearchAPIUtil *instance = nil; static dispatch_once_t predicate; dispatch_once(&predicate, ^{ instance = [[self alloc] init]; }); return instance; } -(void)addSearchItemsArray:(NSArray *)array{ if(IS_IOS_9){ NSMutableArray <CSSearchableItem *> *searchableItems = [NSMutableArray arrayWithCapacity:0]; for (NSDictionary *d in array) { NSString *title = [d objectForKey:@"title"]; NSString *desc = [d objectForKey:@"desc"]; NSString *time = [d objectForKey:@"time"]; NSString *nid = [d objectForKey:@"nid"]; CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc]initWithItemContentType:@"SearchAPIViews"]; attributeSet.title = title; attributeSet.contentDescription = [NSString stringWithFormat:@"%@ %@",desc,time]; NSMutableArray *keywords = [NSMutableArray arrayWithArray:[title split:@" "]]; [keywords addObject:desc]; attributeSet.keywords = keywords; NSString *identifiner = [NSString stringWithFormat:@"%@",nid]; [searchableItems addObject:[[CSSearchableItem alloc]initWithUniqueIdentifier:identifiner domainIdentifier:IOS9SearchAPIUtil_domainIdentifier attributeSet:attributeSet]]; } [[CSSearchableIndex defaultSearchableIndex]indexSearchableItems:searchableItems completionHandler:^(NSError * __nullable error) { if(error != nil){ NSLog(@"%@",error.localizedDescription); }else { NSLog(@"Items were indexed successfully"); } }]; } } @end用法:
[[IOS9SearchAPIUtil sharedInstance]addSearchItemsArray:@[@{@"nid":@"fin://1238796",@"title":@"fin",@"desc":@"基金",@"time":@"2014-01-01"},@{@"nid":@"fun://54fdsaf32",@"title":@"fun",@"desc":@"理財",@"time":@"2016-01-01"}]];效果:
PS:
上传framework:
Swift版本号:http://www.csdn.net/article/2015-07-16/2825222-search-apis
#define IS_IOS_9 ([[[UIDevice currentDevice] systemVersion] floatValue] >=9.0 ? YES : NO)
split就是调用NSString的 componentsSeparatedByString 方法;
NSString+Wapper.h 类參照:http://blog.csdn.net/coooliang/article/details/45871149