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
命名空间冲突
我正在尝试将图像从 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