加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用核心数据保存和显示图像 – 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,所以建议的代码可能无法编译,但你应该知道什么是错的,需要做些什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读