gpt4 book ai didi

iOS 9 - NSUserActivity 用户信息属性显示为空

转载 作者:技术小花猫 更新时间:2023-10-29 11:17:51 28 4
gpt4 key购买 nike

我有一个关于 NSUserActivity 的 userInfo 属性的快速问题。

NSString *activity = @"com.test.activity";  
NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:activity];
userActivity.title = @"Test";
userActivity.keywords = [NSSet setWithArray:@[@"Test"];
userActivity.userInfo = @{@"location": location};

userActivity.eligibleForSearch = YES;
self.userActivity = userActivity;
[self.userActivity becomeCurrent];

我在其中一个 View Controller viewDidLoad() 中实现了上述片段。当我的项目出现在 Spotlight 搜索中时,它会调用 continueUserActivity 委托(delegate)方法。

我正在尝试访问 userActivity.userInfo 属性,但它返回 null,即使它已在上面设置。

这是 continueUserActivity 片段:

-(BOOL)application:(nonnull UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * __nullable))restorationHandler {

NSString *locationName = [[userActivity.userInfo objectForKey:@"location"] valueForKey: @"name"];

// Do stuff with locationName

return NO;

编辑:我更改了位置对象以作为原始类型返回,但我在委托(delegate)方法上仍然得到 null。

有其他人在 iOS 9 beta 3 中遇到这个问题吗?

最佳答案

我在 iOS 9 beta 5 中工作,另一种方式 userInfoapplication:continueUserActivity:restorationHandler: 中可能为 nil如果您还设置了 NSUserActivitywebPageURL属性(property)。如果设置 webPageURL属性(property)并希望userInfo不为零,则需要在 NSUserActivity 中包含适当的键的 requiredUserInfoKeys属性(property)。这花了我很长时间才弄明白,但我很遗憾在文档中遗漏了这一点。

NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:activityType];
activity.title = @"title";
activity.webpageURL = [NSURL URLWithString:webLinkUrlString];
activity.userInfo = @{@"id": webLinkUrlString, @"deep_link": deepLinkUrl};
// set requiredUserInfoKeys if you're also setting webPageURL !!
// otherwise, userInfo will be nil !!
activity.requiredUserInfoKeys = [NSSet setWithArrays:@[@"id", @"deep_link"]];
activity.eligibleForSearch = YES;
activity.eligibleForPublicIndexing = YES;
activity.contentAttributeSet = attributeSet;
activity.keywords = [NSSet setWithArray:keywordsArray];
self.activity = activity;
[self.activity becomeCurrent];

关于iOS 9 - NSUserActivity 用户信息属性显示为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328032/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com