如何使用核心数据保存和显示图像 – 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,所以建议的代码可能无法编译,但你应该知道什么是错的,需要做些什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
