Я работаю над виджетом в iOS 14, который будет показывать изображения из Core Data, отправленные моими пользователями. В настоящее время я могу показать одно изображение, но оно не вращается по изображениям проекта ... оно показывает только одно изображение в виджете.
В моем Widget.swift я могу получить изображение для показа только с помощью ForEach. Если я не использую ForEach, я получаю сообщение об ошибке Value of type 'FetchedResults<Project>' has no member 'image1'
Вот (в основном) рабочий код
struct WidgetEntryView : View {
var entry: Provider.Entry
@State var projectImage1: Data = .init(count: 0)
@FetchRequest(entity: Project.entity(), sortDescriptors: []) var project: FetchedResults<Project>
var body: some View {
ForEach((project.prefix(1)), id: \.self) { (project: Project) in
Image(uiImage: UIImage(data: project.image1 ?? self.projectImage1) ?? UIImage(imageLiteralResourceName: "icon"))
.resizable()
.aspectRatio(contentMode: .fill)
}.environment(\.managedObjectContext, managedObjectContext)
}
}
Опять же, если я использую приведенный ниже код, по какой-то причине я получаю ошибку нет участника.
struct WidgetEntryView : View {
var entry: Provider.Entry
@State var projectImage1: Data = .init(count: 0)
@FetchRequest(entity: Project.entity(), sortDescriptors: []) var project: FetchedResults<Project>
var body: some View {
Image(uiImage: UIImage(data: project.image1 ?? self.projectImage1) ?? UIImage(imageLiteralResourceName: "icon"))
.resizable()
.aspectRatio(contentMode: .fill)
}.environment(\.managedObjectContext, managedObjectContext)
}
}
Как сделать так, чтобы ForEeach показывал случайный атрибут project.image1
? Я пробовал добавлять randomElement()
и shuffle()
, но ни один из них не принимается.
Вот полный Widget.swift: https://pastebin.com/aFMuZ0iz