khe*_*aud 8 deployment persistence core-data objective-c ios
我在Apple文档中找不到这些步骤的清晰描述......
现在,我想停止在设备上执行那么繁重的XML解析过程,并直接包含一个包含所需数据的Store.
我对此有一些疑问:
谢谢你的提示.URL或其他SO问题非常感谢!
Kheraud
rck*_*nes 15
您可以在应用中包含商店文件(大部分时间都是sqlite db).然后在你的app委托编辑persistentStoreCoordinator getter merhod:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator_ != nil) {
return persistentStoreCoordinator_;
}
NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"CoreDataStore.sqlite"];
// Check if the store exists in.
if (![[NSFileManager defaultManager] fileExistsAtPath:storePath]) {
// copy the payload to the store location.
NSString *bundleStore = [[NSBundle mainBundle] pathForResource:@"YourPayload" ofType:@"sqlite"];
NSError *error = nil;
[[NSFileManager defaultManager] copyItemAtPath:bundleStore toPath:storePath error:&error];
if (error){
NSLog(@"Error copying payload: %@", error);
}
}
NSError *error = nil;
NSURL *storeURL = [NSURL fileURLWithPath:storePath];
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator_;
}
Run Code Online (Sandbox Code Playgroud)
Tec*_*Zen 11
这就是真的.
您当前正在做的事情(首次启动时填充)是填充Core Data存储的"推荐"方式.虽然它有点hackish,但你可以按如下方式播放设备上的数据库:
~/Library/Application Support/iPhone Simulator/4.3/Applications/335567A0-760D-48AF-BC05-7F0D9BD085B6/<app-name>.app/)application:didFinishLaunchingWithOptions:方法中添加一些代码,以便在首次启动时将数据库从只读资源目录复制到应用程序的文档目录.当然,您需要在初始化Core Data 之前执行此操作.根据您在数据库中存储的确切内容,您可能会发现重大与小端的问题或其他不兼容性.为了使方法更安全,您可以splite3 databasefile .dump >dumpfile在Mac上转储模拟器数据库(),然后在项目中包含dumpfile(如上所述),并在首次启动时在应用程序中粘贴转储(逐行读取) ,并将sql语句交给sqlite API).
| 归档时间: |
|
| 查看次数: |
4368 次 |
| 最近记录: |