如何使用 1 个函数将 2 个属性保存到核心数据(Swift4)

Posted

技术标签:

【中文标题】如何使用 1 个函数将 2 个属性保存到核心数据(Swift4)【英文标题】:how to save 2 attributes using 1 function to core Data (Swift4) 【发布时间】:2018-07-04 02:31:22 【问题描述】:

我的代码现在导致运行时错误。它只适用于 1 个属性,但有 2 个属性会崩溃。我还在下面附上了我的 coreData 文件的照片。

class firstVC : UIViewController 
@IBOutlet var enterText: UITextField!
@IBOutlet var enterNumber: UITextField!


var itemsName : [NSManagedObject] = []
var textFieldz : UITextField!
@IBAction func sam()
    save()



func  save() 
    let appD = UIApplication.shared.delegate as! AppDelegate

    let context = appD.persistentContainer.viewContext
    let entity = NSEntityDescription.entity(forEntityName: "Team", in : context)!

    let theTitle = NSManagedObject(entity: entity, insertInto: context)
    theTitle.setValue(enterText.text, forKey: "lorde")
    theTitle.setValue(enterNumber.text, forKey: "num")



    do 
        try context.save()
        itemsName.append(theTitle)


        ////
    
    catch 
        print("Tom Corley")

    





coreData 文件的图片。

【问题讨论】:

什么是崩溃(错误消息和/或堆栈转储),两者的哪个属性是导致崩溃的新属性? 导致崩溃的属性是第二个num。 错误是什么? 这是错误:'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:实体 Team 不符合键“num”的键值编码。' 您是手动还是自动生成您的 NSManagedObject 子类,也许您的代码在添加第二个属性后与您的模型不同步?检查属性定义中“num”之后是否没有多余的空格 【参考方案1】:

我看到你已经标记了你的问题 swift4 那么为什么不直接使用实体类

let team = Team(context: context)
team.lorde = enterText.text
team.num = enterNumber.text

这样可以避免任何拼写错误,并且可以在编译时而不是运行时发现错误。

【讨论】:

以上是关于如何使用 1 个函数将 2 个属性保存到核心数据(Swift4)的主要内容,如果未能解决你的问题,请参考以下文章

保存到多个实体中 - 核心数据 - Swift

如何将数组保存到实体的属性中?

核心数据保存和加载到多个实体

将照片保存到核心数据

如何使用检索到的核心数据对象

如何将同一个xib文件绑定到不同的核心数据实体