代码之家  ›  专栏  ›  技术社区  ›  Jordan H

NSUserActivity上的CSSearchableItemAttributeSet应使用哪些属性?

  •  7
  • Jordan H  · 技术社区  · 9 年前

    我将Web Markup添加到我的网站,这样当用户在iOS 9中搜索时,项目将显示在Spotlight Search结果中。用户可以在应用程序中浏览相同的项目,因此我想创建 NSUserActivity 当用户浏览项目时链接到web内容的对象。

    现在 NSUser活动 有一个 contentAttributeSet 属性,用于将缩略图照片附加到活动。 CSSearchableItemAttributeSet 具有一些属性 NSUser活动 也有,所以我不确定应该实现哪一个,或者是否应该为两者指定相同的数据。我要设置 title 对于 NSUser活动 以及 标题 CSSearchableItemAttributeSet(CS可搜索项属性集) ,还是只有一个或另一个?与相同 keywords 这也是两者的属性。

    NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@“com.domain.appname-something"];
    activity.title = @“My Title";
    activity.keywords = [NSSet setWithArray:@[@“one", @“two", @“three"]];
    activity.userInfo = @{@“id": @“12345"};
    activity.requiredUserInfoKeys = [NSSet setWithArray:@[@“id"]];
    activity.eligibleForSearch = YES;
    activity.eligibleForPublicIndexing = YES;
    activity.webpageURL = [NSURL URLWithString:@"https://someurl.com"];
    
    //QUESTION: Do I need to duplicate title and keywords here:
    CSSearchableItemAttributeSet *contentAttributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage];
    contentAttributeSet.title = activity.title;
    contentAttributeSet.displayName = activity.title;
    contentAttributeSet.keywords = [activity.keywords allObjects];
    contentAttributeSet.contentDescription = @“My Description Here";
    contentAttributeSet.thumbnailData = [self generateImage];
    
    activity.contentAttributeSet = contentAttributeSet;
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   PGDev    9 年前

    如果 所有权财产 如果同时指定了NSUserActivity和CSSearchableItemAttributeSet,则

    1. 项目可通过两个标题进行搜索。
    2. 搜索结果将具有NSUserActivity实例中指定的标题。

    如果 关键字属性 如果同时指定了NSUserActivity和CSSearchableItemAttributeSet,则可以使用CSSearchbleItemAttributionSet实例中指定的关键字而不是NSUserActivaty实例中指定指定的关键字来搜索项目。

    为NSUserActivity或CSSearchableItemAttributeSet设置属性时没有冲突。

    因此,当将CSSearchableItemAttributeSet与NSUserActivity一起使用时,我们可以跳过设置NSUserActivaty类通用的CSSearchbleItemAttributionSet属性。

        2
  •  1
  •   Jordan H    9 年前

    在与DTS就此话题进行了讨论后,他们得出了以下结论:

    关于属性,如 keywords ,可以在 NSUserActivity和嵌入的NSUserActivaty CSSearchableItemAttributeSet,核心聚光灯的建议 工程就是你把它们放在 CSSearchableItemAttributeSet。

    [ title displayName ]或多或少都是一样的 这意味着,如果项目有一个很长的标题 这个 标题 属性和缩写标题将出现在 显示名称 所有物