如何在Swift中更新核心数据中的任何属性?

时间:2015-05-26 04:15:01

标签: ios swift core-data

我已经阅读了许多与我的问题有关的问题。我几乎尝试了所有的解决方案,但它仍然无法正常工作。

我的问题是我想更新名为" Person"的核心数据中的现有对象。

这是我的代码:

func updateDataToCoreData() -> Void {
     var people : [Person]()
    // 1
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext

    // 2
    let fetchRequest = NSFetchRequest(entityName: "Person")

    // 3
    var err : NSError?
    let fetchedResults = managedContext?.executeFetchRequest(fetchRequest, error: &err) as? [Person]

    if let result = fetchedResults {
        people = result

        for index in 0...people.count-1 {
            if people[index].valueForKey("code") as! String == id.text {
                var entity = NSEntityDescription.entityForName("Person", inManagedObjectContext: managedContext!)
                let batchUpdate = NSBatchUpdateRequest(entity: entity!)
                batchUpdate.resultType = NSBatchUpdateRequestResultType.UpdatedObjectIDsResultType
                batchUpdate.propertiesToUpdate = ["name":"myUpdate"]
                var err : NSError?
                managedContext?.executeRequest(batchUpdate, error: &err)
                if let err = err {
                    println("Error \(err), \(err.userInfo)")
                }
            }
        }
    } else {
        println("cannot fetch data from core data \(err), \(err!.userInfo)")
    }

1 个答案:

答案 0 :(得分:1)

(people[index] as! Person).attribute = //set to new value
managedContext.save(nil)