2016-03-01 92 views
0

我正在使用核心数据来存储不同的活动,并跟踪每项活动执行的次数。该实体被称为“活动”,其属性为“名称”和“总数”。当一个活动执行了多次,我想改变属性“总数”(通过加+1),而不是添加一个新的活动。我怎样才能做到这一点?这是到目前为止我的代码:使用核心数据更新特定元素的属性

let appDel = (UIApplication.sharedApplication().delegate as! AppDelegate) 
    let context: NSManagedObjectContext = appDel.managedObjectContext 
    let request = NSFetchRequest(entityName: "Activities") 
    request.returnsObjectsAsFaults = false 

    request.predicate = NSPredicate(format:"(name == %@)", name) 

do { 
     let results = try context.executeFetchRequest(request) as! [Activities] 

     if results.count == 0 { 
      newActivity.setValue(1, forKey: "total") 
      newActivity.setValue(name), forKey: "name") 
      do { 
       try context.save() 

      } 

      catch { 
       print(error) 
      } 
     } 

    } 
    catch let error as NSError { 
     print(error) 
    } 
} 

回答

0

如果您想更新(如果我没有记错的话),你可以改变total这样的:

results.total = YourWantedNumber or results.setValue(YourWantedNumber, forKey: "total") 
context.save() 
+0

这工作得很好,除了元素似乎“自我复制”。每次活动更新时,都会添加具有以下属性的元素: name = nil; total = 0; – Nils