将图像保存到核心数据中并将其提取到 tableview 单元格中
Posted
技术标签:
【中文标题】将图像保存到核心数据中并将其提取到 tableview 单元格中【英文标题】:Saving image into core data and fetching it into tableview cell 【发布时间】:2015-10-06 14:42:58 【问题描述】:我使用实体“用户”和属性“用户名”设置了 CoreData(当我在 uitextfield 中键入内容时,它保存到核心数据中,并且我从核心数据中读取到 tableview 单元格)。这就像一种魅力。但是我也想显示从 imagepickercontroller 中选择的图片,当我选择图片时它也可以正常工作,但是当我点击保存时,我认为我已经保存了它。我不知道它是否被保存,因为我消除了所有错误,所以我没有错误,但它不会将该图片读入 tableview 单元格。我将二进制数据类型的新属性“图像”放入核心数据文件,但代码不起作用。
这是保存到核心数据的代码
let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context)
newUser.setValue(nameField.text, forKey: "username")
let picture = UIImageJPEGRepresentation(photoImageView.image!, 1);
newUser.setValue(picture, forKey: "image")
这是tableview从核心数据中读取数据的代码
cell.imageView!.image = person.valueForKey("image") as? UIImage
我也试过
[UIImage, imageWithData:self.myEvent.picture];
但是 Swift 2.0 没有 imageWithData 这个语法
【问题讨论】:
【参考方案1】:person.valueForKey("image") as? UIImage
不起作用。
使用UIImage(data:)
将检索到的NSData转换为UIImage。
【讨论】:
让图片对象在第一个 vc 中,tableview 在第二个,那么在第二个 vc 中如何获取让图片对象? 在第二个 vc 中尝试过,但它不起作用 let image : UIImage = UIImage(data: person.valueForKey("image") as? UIImage) 它不应该是as? UIImage
,你把它保存为NSData
和UIImageJPEGRepresentation
。至于将数据传递给另一个视图控制器,您可以使用prepareForSegue
。
这段代码用于从核心数据中检索数据 cell.textLabel!.text = person.valueForKey("username") as?字符串,uiimage如何使用相同的原理?
你不能,因为你没有将数据保存为 UIImage。您将其保存为带有 jpeg 表示的 NSData。将其检索为 NSData 并使用 UIImage(data:) 转换为 UIImage【参考方案2】:
为了从核心数据中检索图像,我使用了这个,它终于可以工作了。
let image = person.valueForKey("image") as? NSData
cell.imageView!.image = UIImage(data: image!)
【讨论】:
以上是关于将图像保存到核心数据中并将其提取到 tableview 单元格中的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL Server 表中读取图像数据(存储 word 文档)并将其保存到本地文件夹