Swift,CoreData 没有插入记录

Posted

技术标签:

【中文标题】Swift,CoreData 没有插入记录【英文标题】:Swift , CoreData not inserting a record 【发布时间】:2017-08-18 09:23:24 【问题描述】:

我有一个函数会在标记处出错 // ERRORS HERE

db 为空,我尝试追加 Persistence 记录,然后设置其值,

tasks[0].persistencevalue = "Some Text"!

任何帮助将不胜感激。

谢谢

堆栈显示:

2017-08-18 10:09:07.158047+0100 Ontrack[6491:1684506] [错误] 错误: CoreData:错误:无法调用指定的初始化程序 NSManagedObject 类“持久性” CoreData:错误:CoreData:错误:无法在 NSManagedObject 类“Persistence”2017-08-18 10:09:08.678 Ontrack [6491:1684506] -[Persistence setPersistencevalue:] 上调用指定的初始化程序:无法识别的选择器发送到实例 0x60800026a040 2017-08-18 10:09:08.681 Ontrack[6491:1684506] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因: '-[Persistence setPersistencevalue:]: 无法识别的选择器发送到 实例 0x60800026a040'

func Update() 
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    let app = (UIApplication.shared.delegate as! AppDelegate )        

    var tasks: [ Persistence] = []    

    let pers = Persistence()

    tasks.append(pers)
    cnt = tasks.count
    // ERRORS HERE 
    tasks[0].persistencevalue = Rate.text!
    // END ERROR

【问题讨论】:

CoreData Swift: How to save and load data?的可能重复 另见this answer“调用指定初始化程序失败”错误。 【参考方案1】:

感谢您的帮助,我能够使用以下代码解决问题。希望它可以帮助遇到同样问题的人。

func Update() 

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

    var persistencies: [ Persistence]?


    var cnt = persistencies?.count

    var perRec: AnyObject! = NSEntityDescription.insertNewObject(forEntityName: "Persistence", into: context) as NSManagedObject

    perRec.setValue(DbKeys.PERSISTENCE_SPEECHRATE_KEY, forKey: "persistencekey")
    perRec.setValue(Rate.text, forKey: "persistencevalue")

    do 
     try context.save()
     catch 
        print (" ERROR")
    

    app.saveContext()

    do 
        persistencies = try context.fetch(Persistence.fetchRequest())
     catch 
        print("Fetching Failed")
    


    cnt = persistencies?.count

  

【讨论】:

以上是关于Swift,CoreData 没有插入记录的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中大量 Core Data 批量插入的内存泄漏

在Core Data中,如何在swift 4中执行`if exists update else insert`? [复制]

如何使用 Swift 在 Core Data 中组合属性?

Swift:在 Core Data 中存储自定义类的数组

为啥 Core Data 插入需要越来越长的时间?

CoreData学习:Core Data Stack(Swift)