首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS9搜索API NSUserActivity的问题

iOS9搜索API NSUserActivity的问题
EN

Stack Overflow用户
提问于 2015-09-08 08:01:23
回答 3查看 464关注 0票数 0

当我观看关于iOS9 search 2015的视频时,有这样一个演示:

代码语言:javascript
复制
var activity:NSUserActivity = NSUserActivity(activityType:"com.yummly.browseRecipe")
activity.title = "Baked Potato Chips"
activity.userInfo = ["id":"http://www.yummly.com/recipe/BPC-983195"]
activity.eligibleForSearch = true
activity.becomeCurrent()

我将此代码复制到我的Xcode并运行它,当我通过Spotlight搜索时,没有结果。它有什么问题?iOS9的窃听器?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-08 10:46:04

我确实是这样做的,是在目标C中,但是你可以很容易地翻译成斯威夫特。

代码语言:javascript
复制
 if ([CSSearchableItemAttributeSet class]) {

CSSearchableItemAttributeSet* attributes = [[CSSearchableItemAttributeSet alloc]initWithItemContentType:@"kUTTypePackage"];//Set you content type

attributes.title = model.name;
attributes.contentDescription = model.description;
attributes.identifier = model.fileURL.lastPathComponent;

UIImage* backImage = [UIImage imageWithData:model.imageData];

if (backImage == nil) {

    attributes.thumbnailData = UIImageJPEGRepresentation([UIImage imageNamed:@"DefaultImage"], 0.5);

}else{

    attributes.thumbnailData = model.imageData;
}

NSString* domainID = @"com.myapp.mycompany";
NSString* uniqueID = model.fileURL.lastPathComponent;
CSSearchableItem* item = [[CSSearchableItem alloc]initWithUniqueIdentifier:uniqueID //value passed from NSUserActivity inside .userInfo
                                                          domainIdentifier:domainID
                                                              attributeSet:attributes];

NSLog(@"Item Attributes:%@",item.attributeSet.identifier);
CSSearchableIndex* index = [CSSearchableIndex defaultSearchableIndex];
[index indexSearchableItems:@[item] completionHandler:^(NSError * _Nullable error) {

    if (!error) {
        NSLog(@"Item \"%@\" indexed",model.name);
    }else{
        NSLog(@"Error, \"%@\" not indexed: %@, %@",model.name,error, error.userInfo);
    }

}];
}else{

    NSLog(@"iOS < 9");
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-24 17:18:51

出于某种原因,在调用NSUserActivity ()之后,必须保留对activity.becomeCurrent对象的引用。像这样(Swift):

代码语言:javascript
复制
activity.becomeCurrent()
self.lastActivity = activity

其中"lastActivity“是您所在类的属性。

票数 2
EN

Stack Overflow用户

发布于 2016-08-26 19:23:32

您需要将NSUserActivity附加到控制器,如下所示。

controller.userActivity =活动

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32452320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档