Coredata 图像转换 swiftUI

Jan*_*nis 5 image image-conversion nsdata swiftui

我正在构建一个简单的 CoreData 应用程序。在某一时刻,用户可以使用 CoreData 以 NSData 格式上传和存储图像。保存 ManagedObjectContext 的工作方式如下:

    let item = Item(context: self.managedObjectContext)

    item.theImage = selectedImageFromPicker.pngData() as NSData?

    //saving the MOC
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试检索图像时,我面临一系列问题。

    struct Box {

      var id: Int

      let title: String

      let image: NSData?

    }



    struct BoxView: View {

      let box: Box

      let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

      var item: Item


      var body: some View {

        VStack {


        Image(uiImage: UIImage(data: box.image) as! Data)

        .resizable()
            .frame(width: 120, height: 120, alignment: .center)
            .aspectRatio(contentMode: .fill)

      }

      }

    }
Run Code Online (Sandbox Code Playgroud)

我很确定用包含数据的 UIImage 显示 Image() 在这里是错误的,但我不知道如何将数据转换为 Image() 方法显示的格式。不幸的是,Xcode 也不会帮助解决它的错误消息,而是将其归咎于 VStack。

也许其他人以前也遇到过这种情况并且可以提供帮助,因为我在网上没有找到任何关于这个特定问题的信息。

Asp*_*eri 3

据我了解,您需要类似以下内容的内容(为了简短和简单起见,我删除了与图像代码无关的内容)

var body: some View {
    VStack {
        image
    }
}

var image: some View {
    if let nsData = box.image, let uiImage = UIImage(data: nsData as Data) {
        return AnyView(Image(uiImage: uiImage)
            .resizable()
            .frame(width: 120, height: 120, alignment: .center)
            .aspectRatio(contentMode: .fill))
        }
    return AnyView(EmptyView())
}
Run Code Online (Sandbox Code Playgroud)