我使用核心数据来保存一些整数(速率),然后在上下文中调用 save:
HeartRateBeat * beat = [HeartRateBeat heartRateWithHeartRate:rate
ofRecordTitle:self.recordTitle
inManagedObjectContext:document.managedObjectContext];
NSError * error;
[document.managedObjectContext save:&error];
在这个方便的方法中,我使用 NSEntityDescription 创建对象,如下所示:
heartRateBeat = [NSEntityDescription insertNewObjectForEntityForName:@"HeartRateBeat" inManagedObjectContext:context];
(我只复制了一些重要的代码,只是为了展示我做了什么。)
在插入每个心跳并保存托管对象上下文后,我立即执行获取请求(我立即保存),并且该请求显示心跳确实存储在核心数据内(心跳数组不断增长),但是如果我重新启动我的应用程序(顺便说一句,我正在使用模拟器)我知道事情实际上并没有保存到磁盘,因为它重新启动。使用 SQLite3 命令行检查显示空表。我在这里缺少什么?
我遇到了同样的问题,但我认为这只是因为,我假设,像我一样,您只是通过 xcode 停止应用程序,而不是实际关闭它。我使用这段代码来强制写入。我使用 UIManagedDocument,通过 appdelegate 共享,而不是手动设置所有内容。
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[[AppDelegate sharedAppDelegate].userDatabase saveToURL:[AppDelegate sharedAppDelegate].userDatabase.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:nil];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)