如何使用核心数据保存和显示图像 – swift 3
发布时间:2020-12-14 18:12:04 所属栏目:百科 来源:网络整理
导读:我正在 Swift 3中进行一个项目 – xcode 8,我正在尝试使用核心数据来保存并在数据库表“users”中显示一些图像. 此图片是其个人资料中的用户照片. 现在我已经设法保存字符串并从核心数据中显示它们,但我在处理图像时遇到了问题. 这是我到目前为止: 将USERS
我正在
Swift 3中进行一个项目 – xcode 8,我正在尝试使用核心数据来保存并在数据库表“users”中显示一些图像.
此图片是其个人资料中的用户照片. 现在我已经设法保存字符串并从核心数据中显示它们,但我在处理图像时遇到了问题. 这是我到目前为止: 将USERS添加到核心数据中 func addUser() { let app = UIApplication.shared.delegate as! AppDelegate let context = app.persistentContainer.viewContext let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users") request.returnsObjectsAsFaults = false let newUser = NSEntityDescription.insertNewObject(forEntityName: "Users",into: context) if (firstName.text == "" && lastName.text == "" && contact.text == "" && email.text == "") { //if we have a user profile delete it deleteUser() } else { // add a new user profile newUser.setValue(firstName.text,forKey: "firstName") newUser.setValue(lastName.text,forKey: "lastName") newUser.setValue(contact.text,forKey: "contact") newUser.setValue(email.text,forKey: "email") //newUser.setValue(imageView.image,forKey: "photo") //let imgUrl = UIImagePickerControllerReferenceURL as! NSURL let img = UIImage(named: "f.png") let imgData = UIImageJPEGRepresentation(img!,1) newUser.setValue(imgData,forKey: "photo") print ("Data added in Users") } do { try context.save() //print("saved!!!") Alert.show(title: "Success",message: "Profile Saved",vc: self) } catch { // print ("Error") Alert.show(title: "Error",message: "Profile not Saved",vc: self) } } 从核心数据显示用户 func showUser() { let app = UIApplication.shared.delegate as! AppDelegate let context = app.persistentContainer.viewContext let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users") request.returnsObjectsAsFaults = false do { let results = try context.fetch(request) if results.count > 0 { print("Profile: Data Found:") for result in results as! [NSManagedObject] { if let firstNameinData = result.value(forKey: "firstName") as? String{ firstName.text = firstNameinData print(firstNameinData) } if let lastNameinData = result.value(forKey: "lastName") as? String{ lastName.text = lastNameinData print(lastNameinData) } if let contactinData = result.value(forKey: "contact") as? String{ contact.text = contactinData print(contactinData) } if let emailinData = result.value(forKey: "email") as? String{ email.text = emailinData print(emailinData) } if let photoinData = result.value(forKey: "photo") as? UIImage{ imageView.image = photoinData } } } else { // if there is not a user profile firstName.text = "" lastName.text = "" contact.text = "" email.text = "" print("Profile : No data found") } //print("Loaded!!!") } catch { print ("Error Loading") } } 我无法显示我保存的图像. 编辑:Xcode给我这条消息“连接资产被中断或资产死亡” 解决方法
用户的属性照片是(NS)数据,就像你那样,转换
UIImage进入NSData. let img = UIImage(named: "f.png") let imgData = UIImageJPEGRepresentation(img!,1) newUser.setValue(imgData,forKey: "photo") 当你检索信息时,你就像照片是一个UIImage对象: if let photoinData = result.value(forKey: "photo") as? UIImage{ imageView.image = photoinData } 根据之前的行,这是不合逻辑的.它应该是这样的: if let imageData = result.value(forKey: "photo") as? NSData { if let image = UIImage(data:imageData) as? UIImage { imageView.image = image } } 注意:我不会说Swift,所以建议的代码可能无法编译,但你应该知道什么是错的,需要做些什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |