Swift:将 UIImage 保存并检索到 CoreData
Swift: Save and Retrieve UIImage Into CoreData
我想将从 UIImagePickerCollector 获取的 UIImage 保存到二进制数据类型的 CoreData 属性 "img" 中。我只是尝试使用以下代码保存。
let sampleimage = profileimg?.image
var dataImage: Data? = nil
if let aSampleimage = sampleimage {
dataImage = aSampleimage.jpegData(compressionQuality: 0.0)
}
let imag = Data()
let newUser = NSEntityDescription.insertNewObject(forEntityName: "Person", into: Constant.context!)
newUser.setValue(self.txtName!.text, forKey: Constant.CDName)
newUser.setValue(self.txtEmail!.text, forKey: Constant.CDEmail)
newUser.setValue(self.txtPassword!.text, forKey: Constant.CDPassword)
newUser.setValue(yourDate, forKey: Constant.CDDob)
newUser.setValue(imag, forKey: Constant.CDImage)
当我尝试 运行 时,它没有显示任何错误。但我不知道图像是否保存在 CoreData 中。我该如何检查?
当我尝试将图像分配到我的 table 视图单元格时,它显示以下错误。请证明正确的解决方案。
您收到 NSData
到 UIImage
的转换错误。尝试使用
UIImage(data:imageData,scale:1.0)
假设图像的比例为 1。
对于您的代码,它可能类似于:
if let imgData = obj.img {
cell.listImg.image = UIImage(data:imgData, scale:1.0) //presuming the image's scale is 1
}
其他变化可能是
if let imgData = obj.img {
cell.listImg.image = UIImage(data: imgData)
}
正在保存图像,在语句newUser.setValue(imag, forKey: Constant.CDImage)
中,您使用的是imag
,但实际图像包含在dataImage
中。请更正
newUser.setValue(imag, forKey: Constant.CDImage)
到
newUser.setValue(dataImage, forKey: Constant.CDImage)
另外,对于截断的共享代码,我没有看到 let imag = Data()
的任何用途,如果它没有在您共享的代码部分之外使用,您可以将其删除。
如果要保存图片,可以设置字段为Binary data,需要转换保存到core data
UIImage to Data
if image != nil{
let data = UIImagePNGRepresentation(image!)
}
当你获取
Data to UIImage
if data != nil{
let image = UIImage(data:data)
}
所以像这样你必须创建 coredata 实体的对象然后你必须创建字段作为二进制数据并保存 UIImage 的数据当你想要获取然后再次需要从数据转换为图像并分配到您的 UIImageview。
我想将从 UIImagePickerCollector 获取的 UIImage 保存到二进制数据类型的 CoreData 属性 "img" 中。我只是尝试使用以下代码保存。
let sampleimage = profileimg?.image
var dataImage: Data? = nil
if let aSampleimage = sampleimage {
dataImage = aSampleimage.jpegData(compressionQuality: 0.0)
}
let imag = Data()
let newUser = NSEntityDescription.insertNewObject(forEntityName: "Person", into: Constant.context!)
newUser.setValue(self.txtName!.text, forKey: Constant.CDName)
newUser.setValue(self.txtEmail!.text, forKey: Constant.CDEmail)
newUser.setValue(self.txtPassword!.text, forKey: Constant.CDPassword)
newUser.setValue(yourDate, forKey: Constant.CDDob)
newUser.setValue(imag, forKey: Constant.CDImage)
当我尝试 运行 时,它没有显示任何错误。但我不知道图像是否保存在 CoreData 中。我该如何检查?
当我尝试将图像分配到我的 table 视图单元格时,它显示以下错误。请证明正确的解决方案。
您收到 NSData
到 UIImage
的转换错误。尝试使用
UIImage(data:imageData,scale:1.0)
假设图像的比例为 1。
对于您的代码,它可能类似于:
if let imgData = obj.img {
cell.listImg.image = UIImage(data:imgData, scale:1.0) //presuming the image's scale is 1
}
其他变化可能是
if let imgData = obj.img {
cell.listImg.image = UIImage(data: imgData)
}
正在保存图像,在语句newUser.setValue(imag, forKey: Constant.CDImage)
中,您使用的是imag
,但实际图像包含在dataImage
中。请更正
newUser.setValue(imag, forKey: Constant.CDImage)
到
newUser.setValue(dataImage, forKey: Constant.CDImage)
另外,对于截断的共享代码,我没有看到 let imag = Data()
的任何用途,如果它没有在您共享的代码部分之外使用,您可以将其删除。
如果要保存图片,可以设置字段为Binary data,需要转换保存到core data
UIImage to Data
if image != nil{
let data = UIImagePNGRepresentation(image!)
}
当你获取
Data to UIImage
if data != nil{
let image = UIImage(data:data)
}
所以像这样你必须创建 coredata 实体的对象然后你必须创建字段作为二进制数据并保存 UIImage 的数据当你想要获取然后再次需要从数据转换为图像并分配到您的 UIImageview。