我在iOS9Sampler中看到以下代码,以在iOS 9中使用Search API。它同时使用NSUserActivityCSSearchableIndex。所以我想问一个问题:


什么时候应该使用NSUserActivity,什么时候应该使用CSSearchableIndex?在Spotlight中搜索时,我看到相同的结果。
下面的代码调用视图控制器的每个viewDidLoad。这是对的吗?还是只打一次电话?如何检查一次通话?


NSUserActivity

    let activityType = String(format: "%@.%@", uniqueIdentifier, domainIdentifier)
    activity = NSUserActivity(activityType: activityType)
    activity.title = "iOS-9-Sampler_NSUserActivity"
    activity.keywords = Set<String>(arrayLiteral: "dog", "cat", "pig", "sheep")
    activity.eligibleForSearch = true
    activity.becomeCurrent()


核心焦点

    let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeImage as String)
    attributeSet.title = "iOS-9-Sampler_CoreSpotlight"
    attributeSet.contentDescription = "iOS-9-Sampler is a code example collection for new features of iOS 9."
    attributeSet.keywords = ["dog", "cat", "bird", "fish"]
    let image = UIImage(named: "m7")!
    let data = UIImagePNGRepresentation(image)
    attributeSet.thumbnailData = data

    let searchableItem = CSSearchableItem(
        uniqueIdentifier: uniqueIdentifier,
        domainIdentifier: domainIdentifier,
        attributeSet: attributeSet)

    CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([searchableItem]) { (error) -> Void in
        if error != nil {
            print("failed with error:\(error)\n")
        }
        else {
            print("Indexed!\n")
        }
    }

最佳答案

您要建立索引的内容类型以及用户与之交互的方式将确定使用NSUserActivity还是CSSearchableItem是合适的。

App Search Programming Guide中对此进行了解释,并提供了几种不同情况的示例,因此请务必仔细阅读。一些注意事项:


在用户执行以下活动时,使用NSUserActivity为项目建立索引
您的应用,例如访问导航点或创建和查看
内容。
使用Core Spotlight将特定于应用程序的内容添加到设备上
索引,例如永久性用户数据-文档,照片和其他
内容类型。
CSSearchableItem不需要用户访问内容,
NSUserActivity不同。
CSSearchableItem不可公开索引,而NSUserActivity
是。

10-07 20:42