我有一个名为“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”。 我哪里错了?
答案 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)