保存不适用于Swift中的Core Data

时间:2016-01-29 19:50:34

标签: ios swift core-data

我有一个名为“Data”的实体,其中包含一个名为“highscore”的属性

我得到了我的NSManagedObject类:

class Data: NSManagedObject
{
    @NSManaged var highscore: NSNumber
}

我尝试了几行:

let managedObjectContext = (UIApplication.sharedApplication().delegate
        as! AppDelegate).managedObjectContext
let entityDescription = NSEntityDescription.entityForName("Data",
        inManagedObjectContext: managedObjectContext)
let data = Data(entity: entityDescription!,
        insertIntoManagedObjectContext: managedObjectContext)

data.highscore = 100

managedObjectContext.insertObject(data)
try! managedObjectContext.save()

print(data.highscore)

因此,当我运行我的应用程序时,一切正常,控制台打印“100”。但当我注释掉data.highscore = 100行并重新启动我的应用程序时,控制台会输出“0”而不是“100”。 我哪里错了?

2 个答案:

答案 0 :(得分:4)

每次运行应用时,都会创建Data的新实例。这就是这条线的作用:

let data = Data(entity: entityDescription!,
    insertIntoManagedObjectContext: managedObjectContext)

并不是Core Data没有保存,而是您永远不会查找您保存的任何数据。如果要获取先前的实例,则需要在持久性存储中查找它。查看NSFetchRequest以查找以前保存的数据。

答案 1 :(得分:0)

我所存储的只是高分的单个值,为什么不使用NSDefaults?我举了一个关于这个问题前面的例子Comparing speed values issue(what ever i am getting from CLLocationManager)