尝试更新时未保存核心数据上下文(在Swift中)

时间:2014-10-23 11:39:19

标签: core-data swift ios8

我尝试从查询(更新)更新后续的核心数据集。出于某种原因,代码似乎没有保存,没有抛出错误,我无法弄清楚原因。

这里是代码提取:

var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context: NSManagedObjectContext = appDel.managedObjectContext!

if itemId != nil {
    var request = NSFetchRequest(entityName:"CheckListItem")
    request.returnsObjectsAsFaults = false
    request.predicate = NSPredicate(format:"itemId == '\(itemId!)' ")

    var queryResults:NSArray = context.executeFetchRequest(request, error: nil)!

    if queryResults.count > 1 {
        CLAlog("DSF-updateChecklistItem-update: Item ID Provided, but a singluar item not found in Core Data", 1)
        abort()
    }

    // Update Existing Item
    queryResults[0].setValue(itemList["itemTitle"]!, forKeyPath: "itemTitle")
    queryResults[0].setValue(itemList["itemDescription"]!, forKeyPath: "itemDescription")
    queryResults[0].setValue(itemType, forKeyPath: "itemType")

    //queryResults[0].setValue(itemList["itemDisplayOrder"], forKeyPath: "itemDisplayOrder")

    var contextError: NSError? = nil
    context.save(&contextError)
}

您可以提供任何帮助。

1 个答案:

答案 0 :(得分:0)

尝试将queryResults var的类型从NSArray更改为AnyObject,如下所示:

var queryResults:[AnyObject] = context.executeFetchRequest(request, error: nil)

检查您是否在queryResults上获得了正确的结果,并检查您设置的值是否为零。

println(queryResults[0])
println(itemList["itemTitle"])