zoukankan      html  css  js  c++  java
  • 【IOS工具类】IOS9的CoreSpotlight(OC语言)

    什么是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 



  • 相关阅读:
    类模板和函数模板
    vector用法
    the swap trick用于锐减过剩容量
    SIGHUP信号
    linux页表机制
    linux中sigsuspend和pause的区别
    最长回文串:LeetCode:Longest Palindromic Substring
    Implement strStr()
    ffmpeg知多少~~~
    下面可能会更新很多。。。
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7191841.html
Copyright © 2011-2022 走看看