WidgetKit 图片来自 URL

WidgetKit Image from URL

我正在尝试将图像从 URL 加载到 Widget。在我最近做的另一个项目中,我已经这样做了。现在我正在尝试执行完全相同的方法并看到一些奇怪的错误 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)
    }
}

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

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


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

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

命名空间冲突