How to insert new data to entity in Swift3?

前端 未结 4 1456
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-20 14:56

In swift previously, I was able to use a code like this to add new data to my \"TestEntity\" in my data model.

NSManagedObject was created for my \"TestEnti

4条回答
  •  时光说笑
    2021-02-20 15:17

    I'm not an core-data expert, but the API offers 3 distinct ways of creating an NSManagedObject instance. I'm not aware if any of them offer any benefit over the other.

    Assuming you have an entity/NSManagedObject subclass called TestEntity then all of the below are the same:

    New way (no casting required) +iOS10:

    let test = TestEntity(context: context)
    test.attribute1 = "a value"
    

    Older ways (casting is not required if you're ok with using setValue. With casting you can use dot notation. +iOS3

    let testEntity =  NSEntityDescription.entity(forEntityName: "TestEntity", in: context)
    
    let test1 = NSManagedObject(entity: testEntity!, insertInto: context)
    test1.setValue("a value", forKey: "attribute1")
    
    let test2 = NSManagedObject(entity: testEntity!, insertInto: context) as! TestEntity
    test2.attribute1 = "a value"
    

    or:

    let test1 = NSEntityDescription.insertNewObject(forEntityName: "TestEntity", into: context)
    test1.setValue("a value", forKey: "attribute1") 
    
    let test2 = NSEntityDescription.insertNewObject(forEntityName: "TestEntity", into: context) as! TestEntity
    test2.attribute1 = "a value"
    

    once you create the NSManagedObject instance and assign its attributes then you just save it in the context.

    do {
        try context.save()
        print("saved!")
    } catch let error as NSError  {
        print("Could not save \(error), \(error.userInfo)")
    } catch {
    
    }
    

提交回复
热议问题