作者:手机用户2602909197 | 来源:互联网 | 2022-12-08 17:43
要理解这个问题,请立即通过WWDC时间机器返回到2014年的远景,此时视频中引入了动作扩展并进行了解释:
https://developer.apple.com/videos/play/wwdc2014/217/
大约在中途,在幻灯片71中,大约23:30,演示者给出了将值返回给调用应用程序的指令(用户在活动视图中点击了我们的Action扩展程序图标的应用程序):
- (IBAction)done:(id)sender {
NSData *data = self.contents;
NSItemProvider *itemProvider =
[[NSItemProvider alloc] initWithItem:data typeIdentifier:MyDocumentUTI];
NSExtensionItem *item = [[NSExtensionItem alloc] init];
item.attachments = @[itemProvider];
}
片刻之后,幻灯片75,大约26分钟,我们看到放置活动视图控制器的应用程序应该如何打开该信封以检索结果数据:
- (void)setupActivityViewController {
UIActivityViewController *controller;
controller.completiOnWithItemsHandler=
^(NSString *activityType, BOOL completed,
NSArray *returnedItems, NSError *error) {
if (completed && (returnedItems.count > 0)) {
// process the result items
}
}];
}
所以我的问题是:这是真的吗?有没有人我的声音里做过任何的那些东西?即:
您的应用是否有一个Action扩展名,它会向调用者返回一个值?
你的应用程序是否建立了一个活动视图控制器,它接收一些任意未知的Action扩展的结果,并对该值做了什么?
我问,因为(1)我从未见过(在我的iPhone上)一个实际返回值的Action扩展,以及(2)在"处理结果项"中省略的代码在我看来是完全挥手,因为如何我的应用程序甚至会知道期望什么样的数据?
我开始相信这段代码是一个没有相应现实的理想的管道梦想.但我很高兴被告知我错了.