【问题标题】:Core Data context not saving while trying to update (in Swift)尝试更新时未保存核心数据上下文(在 Swift 中)
【发布时间】:2014-10-23 11:39:18
【问题描述】:

我正在尝试根据查询(更新)更新核心数据集。由于某种原因,代码似乎没有保存,没有抛出错误,我不知道为什么。

代码摘录如下:

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)
}

如果您能提供任何帮助,我们将不胜感激。

【问题讨论】:

  • 您检查变量contextError 是否存在可能的错误? save 方法返回布尔值,如果为 false 则可以打印错误。
  • 是的,我有。错误变量返回 nil。

标签: core-data swift ios8


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多