CoreSpotlight介绍和使用

CoreSpotlight是iOS中用于实现系统搜索功能的框架,允许用户通过Spotlight搜索到应用程序内部的内容。本文将介绍如何引入头文件、创建和插入条目、进行删除操作以及处理点击事件。关键点包括:相同ID的条目会被覆盖,推荐使用本地图片,图片数据可以是本地数据或通过异步下载。建议通过单例和数据持久化管理条目ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 功能:系统搜索可以搜索到app内的东西

对象名描述类型
CSSearchableIndex用来插入条目的对象对象
CSSearchableItem要插入的对象对象
CSSearchableItemAttributeSet要插入的对象的属性描述对象
identifier插入的标识符,这个在处理的时候可以拿到,然后根据它来处理点击事件字符串

2. 引入头文件

#import <CoreSpotlight/CoreSpotlight.h>

3. 创建插入的条目

    CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:identifier domainIdentifier:@"bundleID" attributeSet:attributeSet];

4. 进行插入和删除操作

插入 多个.一个的话数组里就写一个
    [[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item]
                                                   completionHandler:^(NSError * __nullable error) {
                                                       if (error) {
                                                           NSLog(@"%@",error.localizedDescription);
                                                       }
                                                   }];

删除一个或者多个,根据identity来删除

//存的是id
NSArray * itemsIdentiferArray = @[];
    for (NSString * identifty in itemsIdentiferArray) {

        if ([identifty isKindOfClass:[NSString class]]) {
            [[CSSearchableIndex defaultSearchableIndex] deleteSearchableItemsWithIdentifiers:@[identifty] completionHandler:^(NSError * __nullable error) {
                if (!error)
                    NSLog(@"%@",error.localizedDescription);
            }];
        }
    }

5. 点击事件的处理

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
        NSString *idetifier = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"];

//拿到id做页面跳转
}

6. 规律

  • 相同id的条目会覆盖,不会有多个
  • 图片最好用本地的图片,比如App logo
  • 图片传的是data,如果是网络的,可以使用缓存,或者异步下载
  • 建议封装一个单例,然后把id都存在一个数组里,并进行数据持久化

由于这个单例的耦合性比较大,对接了项目的数据模型,就不放demo了,放了也不好用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值