微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS内容阻止扩展加载多个JSON文件

是否可以从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)

现在,您可以根据您的偏好创建带附件的组合数据.

原文地址:https://www.jb51.cc/iOS/334445.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐