0

我在 iOS9Sampler 中看到下面的代码在Search APIiOS 9 中使用。它同时使用NSUserActivityCSSearchableIndex. 所以我想问一个问题:

  1. 什么时候用NSUserActivity,什么时候用CSSearchableIndex?在 Spotlight 中搜索时,我看到它得到相同的结果。
  2. 下面的代码调用每个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")
        }
    }
4

1 回答 1

2

您要编制索引的内容类型以及用户与其交互的方式将决定它是否适合使用NSUserActivityCSSearchableItem

这在App Search Programming Guide中进行了解释,并为几个不同的场景提供了示例,因此请务必仔细阅读。一些注意事项:

  • 用于NSUserActivity在用户在您的应用程序中执行活动时为项目编制索引,例如访问导航点或创建和查看内容。
  • 使用 Core Spotlight 将特定于应用程序的内容添加到设备索引中,例如持久的用户数据 - 文档、照片和其他类型的内容。
  • CSSearchableItem不需要用户访问内容,不像NSUserActivity.
  • CSSearchableItem不可公开索引,NSUserActivity 而是。
于 2015-12-24T22:11:48.847 回答