2015-10-19 17 views
0

我在iOS9Sampler中看到以下代码在iOS 9中使用Search API。它使用NSUserActivityCSSearchableIndex。所以,我要问的问题:Search API中的CSSearchableIndex和NSUserActivity有什么区别?多久打一次电话?

  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") 
     } 
    } 

回答

2

类型的你正在索引内容以及用户如何与它进行交互,将决定它是否适合使用NSUserActivityCSSearchableItem

这在App Search Programming Guide中有解释,并且提供了几个不同场景的示例,因此请务必彻底查看。一些注意事项:

  • 使用NSUserActivity索引的项目,如用户执行 您的应用程序的活动,如参观导航点或创建和查看 内容。
  • 使用Core Spotlight将应用程序特定内容添加到设备上的 索引,例如永久用户数据 - 文档,照片和其他内容类型 。
  • CSSearchableItem不需要用户访问内容, 不像NSUserActivity
  • CSSearchableItem不是公开索引的,而NSUserActivity 是。
相关问题