I am using visionOS.
To your model, I am adding default as nil
@Model
class User {
var name: String
@Attribute(.externalStorage) var image: Data?
var createdAt: Date
init(name: String, image: Data? = nil, createdAt: Date = .now) {
self.name = name
self.image = image
self.createdAt = createdAt
}
}
The following code is working for me:
enum ImageConversionError: Error {
case imageNotFound
case pngConversionFailed
}
func convertImageToPNG(uiImage: UIImage?) throws -> Data {
guard let image = uiImage else {
throw ImageConversionError.imageNotFound
}
guard let pngData = image.pngData() else {
throw ImageConversionError.pngConversionFailed
}
return pngData
}
func createUser(name: String, uiImage: UIImage?) -> User {
do {
let pngData = try convertImageToPNG(uiImage: uiImage)
print("Image converted to PNG data successfully.")
return User(name: name, image: pngData)
} catch ImageConversionError.imageNotFound {
print("Error: Image not found.")
} catch ImageConversionError.pngConversionFailed {
print("Error: PNG conversion failed.")
} catch {
print("An unexpected error occurred: \(error).")
}
return User(name: name)
}