是否可以从Content Blocker Extension返回多个
JSON文件?在我的UI用户中启用/禁用不同的过滤器,每个过滤器由单独的文件表示.我目前有(尽管迭代多次,它只加载一个):
func beginRequestWithExtensionContext(context: NSExtensionContext) { var items = Array <NSExtensionItem>() let resources = ["a","b","c"] for resource in resources { let url = NSBundle.mainBundle().URLForResource(resource,withExtension: "json") if let attachment = NSItemProvider(contentsOfURL: url) { let item = NSExtensionItem() item.attachments = [attachment] items.append(item) } } context.completeRequestReturningItems(items,completionHandler: nil) }
解决方法
可以有多个JSON文件并将其用于Content Blocker扩展.
1)将多个扩展项传递给completeRequestReturningItems方法时引发SFContentBlockerErrorDomain
2)无法将多个附件附加到NSExtension,对源代码的评论说,附件并不是一组备用数据格式/类型,而是一个包含在社交媒体帖子中的集合.这些项始终是键入的NSItemProvider.我估计你不能添加多个json数据作为附件,因为它们不是一系列用于创建消息的附件.
我的解决方案(已验证可行):
可以使用item(NSData)和typeIdentifier初始化NSItemProvider.
let aData = NSData(contentsOfURL: NSBundle.mainBundle().URLForResource("a",withExtension: "json")!) let bData = NSData(contentsOfURL: NSBundle.mainBundle().URLForResource("b",withExtension: "json")!) aJSON = `convert aData to JSON` bJSON = `convert bData to JSON` combinedJSON = `aJSON + bJSON` combinedData = 'convert combinedJSON to NSData' let attachment = NSItemProvider(item: combinedData,typeIdentifier: kUTTypeJSON as String)
现在,您可以根据您的偏好创建带附件的组合数据.