首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法恢复NSUserActivity的userInfo

无法恢复NSUserActivity的userInfo
EN

Stack Overflow用户
提问于 2015-12-26 17:16:05
回答 1查看 986关注 0票数 3

我有一个应用程序,你可以在我们学校找到员工通过电子邮件与他们联系。当您找到某人并查看详细信息时,将创建一个NSUserActivity

代码语言:javascript
复制
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")) {
        //Create NSUserActivity for the person
        NSUserActivity * activity = [[NSUserActivity alloc] initWithActivityType:CAUserActivityTypePerson];
        activity.title = [_displayedPerson completeName];
        activity.requiredUserInfoKeys = [NSSet setWithArray:@[@"id", @"fullName"]];
        activity.userInfo = [NSDictionary dictionaryWithObjects:@[_displayedPerson.personID, [_displayedPerson completeName]] forKeys:@[@"id", @"fullName"]];


        activity.keywords = [NSSet setWithObjects:[_displayedPerson completeName], [_displayedPerson institutionString], nil];

        CSSearchableItemAttributeSet * contentAttributeSet = [[CSSearchableItemAttributeSet alloc] init];
        contentAttributeSet.contentDescription = [_displayedPerson institutionString];

        activity.contentAttributeSet = contentAttributeSet;

        //make the activity active and searchable
        self.userActivity = activity;
        self.userActivity.eligibleForHandoff = NO;
        self.userActivity.eligibleForSearch = YES;
        self.userActivity.eligibleForPublicIndexing = NO;
        self.userActivity.needsSave = YES;
        [self.userActivity becomeCurrent];
        NSLog(@"UserActivity created\nInfo: %@", self.userActivity.userInfo);
    } else
        NSLog(@"Did not create NSUserActivity! iOS 9 required!");

在创建UserActivity时,NSLog(@"UserActivity created\nInfo: %@", self.userActivity.userInfo);返回正确的userInfo

当我在聚光灯下找到条目(正确显示所有相关数据)并单击它时,应用程序将被打开,- (BOOL)application:continueUserActivity:restorationHandler:被调用,userActivity包含正确的标题和类型。但是userInforequiredUserInfoKeys都是空的。

代码语言:javascript
复制
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {

    NSLog(@"Activity: %@\nInfo: %@", userActivity.activityType, userActivity.requiredUserInfoKeys);

    return YES;
}

我不明白,在哪里我犯了一个错误。我已经读过this了,但没什么用。

PS:_displayedPerson.personID是一个NSNumber[_displayedPerson completeName]返回一个NSString

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-28 00:48:56

我在苹果开发者论坛上找到了答案。updateUserActivityState:需要被覆盖。

代码语言:javascript
复制
- (void)updateUserActivityState:(NSUserActivity *)userActivity {
    [userActivity addUserInfoEntriesFromDictionary:@{@"id" : _displayedPerson.personID, @"fullName" : [_displayedPerson completeName]}];
}

我不知道,我为什么要这么做,但很管用。希望,这也会对其他人有所帮助。

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

https://stackoverflow.com/questions/34473480

复制
相关文章

相似问题

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