ios - Swift - 将 Int 保存到核心数据只能工作一次

标签 ios swift core-data

这是我保存数据的方式

    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let managedContext = appDelegate.managedObjectContext!
    let entity =  NSEntityDescription.entityForName("Theme", inManagedObjectContext: managedContext)
    let themeObj = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext)

    themeObj.setValue(num, forKey: "themeNumber")

    var error: NSError?
    if !managedContext.save(&error)
    {
        println("Could not save \(error), \(error?.userInfo)")
    }

然后加载它

    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let managedContext = appDelegate.managedObjectContext!

    let fetchRequest = NSFetchRequest(entityName:"Theme")
    var resultArr = [NSManagedObject]()
    var error: NSError?

    let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]?

    if let results = fetchedResults
    {
        resultArr = results
    }
    else
    {
        println("Could not fetch \(error), \(error!.userInfo)")
    }


    theme = resultArr[0].valueForKey("themeNumber") as Int

我的数据模型只是具有一个属性的实体主题,themeNumber 是一个整数 16。如果我从模拟器中删除该应用程序,它会加载正确的主题。但是,如果我更改它并再次运行它……什么也没有。有什么想法吗?

最佳答案

您不需要使用 setValue。通常你会做这样的事情:

themeObj.themeNumber = num

因此,要解决您的问题,您需要实际更新核心数据对象。我刚刚意识到您可能没有通过属性设置 themeNumber,因为您没有为您的实体设置 NSManagedObject 子类。我会写尝试为您的设置方式编写修复程序。

theme = resultArr[0] as NSManagedObject
theme.setValue(num, forKey: "themeNumber")
if !managedContext.save(&error)
{
    println("Could not save \(error), \(error?.userInfo)")
}

保存后,查看它是否具有您要查找的新值。

关于ios - Swift - 将 Int 保存到核心数据只能工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29620262/

相关文章:

ios - 模拟器中的不同 View 大小取决于在 Interface Builder Xcode 9 中选择的设备

ios - 在App Store Connect上不可用的在App Store上查看选项

objective-c - 最佳实践? - 数组/字典作为核心数据实体属性

ios - Swift:带有单元格的表格(相同属性不同内容;可点击)

iphone - iPhone 应用程序之间的核心数据存储共享

ios - 批量请求单个objectID swift

ios - 在iOS 8的UITextview中单击时,键盘没有弹出,但在iOS 7中工作良好

ios - 在 UIViewController、iOS Swift4.2、Xcode10.1 中只调用一次函数

ios - 将数组保存为核心数据中的数据的正确方法是什么?

ios - Swift 3/iOS 10,正确使用核心数据