【问题标题】:WidgetKit Image from URL来自 URL 的 WidgetKit 图像
【发布时间】:2021-06-11 13:48:44
【问题描述】:

我正在尝试将图像从 URL 加载到小部件。在我最近制作的另一个项目中,我已经这样做了。现在我正在尝试执行相同的方法并看到一些奇怪的错误Argument type 'URL' does not conform to expected type 'Decoder'Cannot convert value of type 'ExampleWidgetExtension.Data' to expected argument type 'Foundation.Data'。我的另一个项目工作得很好,我像以前一样使用Codable 数据。除了图像之外的一切似乎都在工作。

struct ExampleWidgetEntryView : View {
    var entry: Provider.Entry

    var body: some View {
        VStack (alignment: .leading, spacing: 5) {
            ForEach(entry.model?.example.results?.prefix(1) ?? [], id: \.id) { example in
                /*
                 Text(example.data.title ?? "")
                 .fontWeight(.bold)
                 .font(Font.system(.caption))
                 .lineLimit(1)
                 */
                if let url = URL(string:example.data.url ?? ""),
                   let imageData = try? Data(from: url),
                   let uiImage = UIImage(data: imageData) {
                    Image(uiImage: uiImage)
                        .resizable()
                        .frame(width: 30, height: 30)
                }
            }
        }
        .padding(.all, 10)
    }
}

【问题讨论】:

    标签: swiftui widgetkit


    【解决方案1】:

    Data(Foundation 中的那个)上没有初始化器,它在 from: 字段中采用 URL。您收到错误的原因是 Data(from:) 在该参数中需要 Decoder。您说您有另一个项目可以执行此操作,但您必须在 Data 上有某种自定义扩展才能使其工作。

    你想要的是let imageData = try? Data(contentsOf: url)


    正如 pawello 在 cmets 中指出的那样,看起来您的项目中可能已经有一个名为“Data”的自定义类型,因此可能需要执行以下操作:
    try? Foundation.Data(contentsOf: url)
    

    您可能需要考虑将 您的 Data 类型重命名为其他名称,以避免与 Foundation 的 Data 发生命名空间冲突

    【讨论】:

    • OP 也可能有一个自定义数据结构,如我们看到的错误消息'ExampleWidgetExtension.Data' 中所示。可能需要try? Foundation.Data(contentsOf: url)
    • 哦——很好。 Swift 命名空间的危险...
    • 我改成let imageData = try? Foundation.Data(from: url),后仍然收到Argument type 'URL' does not conform to expected type 'Decoder'
    • @cole 这是Foundation.Data(contentsOf: url),不是Foundation.Data(from: url)
    • @pawello2222 图像正在工作,但其他数据现在没有显示以前的样子。现在不知道是什么原因造成的。我在控制台中看到更多错误消息。 nil host used in call to allowsAnyHTTPSCertificateForHost:NSURLConnection finished with error - code -1002.
    猜你喜欢
    • 1970-01-01
    • 2019-07-22
    • 2012-11-25
    • 1970-01-01
    • 2012-08-23
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多