gpt4 book ai didi

swift - 使用 Swift 从 Core Data 获取数据并显示在 UITextFields 中

转载 作者:搜寻专家 更新时间:2023-11-01 05:32:25 30 4
gpt4 key购买 nike

我正在尝试从 Core Data 获取数据并使用 Swift 在 UITextFields 中显示它们。我想我已经使用以下代码成功保存到核心数据中:

    func insertUserData() {

let user = UserData(context: managedObjectContext)
user.full_name = nameTextField.text!
user.address = addressTextField.text!
user.phone_number = phoneTextField.text!
user.email = emailTextField.text!

do {
try managedObjectContext.save()
print("Saved Successfully!")
} catch {
print(error.localizedDescription)
}

}

其中 UserData 是核心数据模型中的实体名称,managedObjectContext 是:

let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

现在我尝试使用以下代码在另一个 ViewController 的 UITextFields 中显示保存的数据:

    func loadProfileData() {

let entityDescription = NSEntityDescription.entity(forEntityName: "UserData", in: managedObjectContext)
let request: NSFetchRequest<UserData> = UserData.fetchRequest()
request.entity = entityDescription

do {
let userInfo = try managedObjectContext.fetch(request as! NSFetchRequest<NSFetchRequestResult>)
let userInformation = userInfo as! NSManagedObject // I'm getting crash here: Cast from '[Any]' to unrelated type 'NSManagedObject' always fails
nameField.text = userInformation.value(forKey: "name") as? String
addressField.text = userInformation.value(forKey: "address") as? String
phoneField.text = userInformation.value(forKey: "phone_number") as? String
emailField.text = userInformation.value(forKey: "email") as? String
} catch {
print(error.localizedDescription)
}

}

崩溃报告:

    libsystem_kernel.dylib`__pthread_kill:
0x2105a70fc <+0>: mov x16, #0x148
0x2105a7100 <+4>: svc #0x80
-> 0x2105a7104 <+8>: b.lo 0x180a6b11c ; <+32>
0x2105a7108 <+12>: stp x29, x30, [sp, #-0x10]!
0x2105a710c <+16>: mov x29, sp
0x2105a7110 <+20>: bl 0x180a607d4 ; cerror_nocancel
0x2105a7114 <+24>: mov sp, x29
0x2105a7118 <+28>: ldp x29, x30, [sp], #0x10
0x2105a711c <+32>: ret

有什么建议可以解决这个问题吗?还有其他更好的方法吗?感谢您的时间和努力。非常感谢带有代码示例的答案。

最佳答案

let userInfo = try managedObjectContext.fetch(request as! NSFetchRequest<NSFetchRequestResult>)

或者更简单地说:

let userInfo = try managedObjectContext.fetch(request)

因为您已经将request定义为

let request: NSFetchRequest<UserData> = UserData.fetchRequest()

userInfo 总是作为一组 UserData 返回,因为请求可能返回多个对象(或没有)。您应该测试该数组至少包含一个条目并使用 userInfo.first 或任何最能满足您需要的方法。显然,您可以使用 NSPredicate 根据您的选择过滤返回值。

关于swift - 使用 Swift 从 Core Data 获取数据并显示在 UITextFields 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54616660/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com