0

Search APIiOS 9 で使用するiOS9Sampler のコードを以下に示します。 と の両方NSUserActivityを使用しCSSearchableIndexます。だから私は質問したい:

  1. をいつ使うべきかNSUserActivity、いつ使うべきCSSearchableIndexか? Spotlight で検索しても同じ結果になることがわかります。
  2. 以下のコードは、すべてviewDidLoadのView Controllerを呼び出します。それが正しいか?それとも一度だけ呼び出す必要がありますか?一度電話をかけるにはどうすればよいですか?

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

NSUserActivityまたはを使用するのが適切かどうかは、インデックスを作成するコンテンツの種類と、ユーザーがそれを操作する方法によって決まりますCSSearchableItem

これについては、App Search Programming Guideで説明されており、いくつかの異なるシナリオの例が提供されているため、これを十分に確認してください。いくつかのメモ:

  • NSUserActivityナビゲーション ポイントへのアクセスやコンテンツの作成と表示など、ユーザーがアプリでアクティビティを実行するときに、アイテムのインデックスを作成するために使用します。
  • Core Spotlight を使用して、永続的なユーザー データ (ドキュメント、写真、その他の種類のコンテンツ) など、アプリ固有のコンテンツをデバイス インデックスに追加します。
  • CSSearchableItemとは異なり、ユーザーがコンテンツにアクセスする必要はありませんNSUserActivity
  • CSSearchableItem公にインデックス可能ではありませんが、そうNSUserActivity です。
于 2015-12-24T22:11:48.847 に答える