我正在使用
loadItemForTypeIdentifier:options:completionHandler:
NSItemProvider 对象上的方法通过 iOS 8 中的 Share 扩展从 Safari 中提取 url。
在 Objective-C 中,这段代码可以编译并运行:
[itemProvider loadItemForTypeIdentifier:(@"public.url" options:nil completionHandler:^(NSURL *url, NSError *error) {
//My code
}];
然而,在 Swift 中,我得到了“NSSecureCoding!” 当我尝试执行类似操作时,它不是“NSURL”编译错误的子类型:
itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (urlItem:NSURL, error:NSError!) in
//My code
})
如果我将 bang 添加到 NSURL 参数类型,如NSURL!
我得到“无法将表达式的类型 'Void' 转换为类型 'Void'”编译错误。如果我将默认参数键入为NSSecureCoding!
,它会编译,但块/闭包不会运行。
我究竟做错了什么?