我正在尝试编写两个应用程序(iphone 和桌面)来实现以下链接中描述的内容:
行。所以我创建了一个非常简单的桌面应用程序,它有一个名为 Client 的实体和一个名为 name 的字符串属性字段。我还生成了相应的 Model 类。
我已经运行了应用程序,在列表中添加了几个客户端名称并保存了文件(作为 Testing.sqlite)。
现在在我等效的 iphone 应用程序中,我正在尝试加载文件。我最初使用其中一个应用程序模板生成了该应用程序,并包含了 Core Data。注意:我已经镜像了 Client 实体并生成了相应的 Model 类。
我进入了我的“应用程序委托”类并修改了 persistentStoreCoordinator 方法以引用我的“Testing.sqlite”文件,即
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Testing.sqlite"]];
我还将保存的桌面应用程序文件复制到预期的位置,即
~/Library/Application Support/IPhone Simulator/User/... etc.
所以现在理论上至少两个应用程序中的每一个都应该是相同的。
但是,当我尝试从中加载数据时,它似乎总是空的。我的代码看起来有点像这样:
// fetch the delegate.
TestingAppDelegate *app = (TestingAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = [app managedObjectContext];
// construct the request.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// execute the request.
NSError *error;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
if (results == nil) {
// Handle the error.
NSLog(@"No data loaded");
}
NSLog(@"Returned: %@", results);
// finally release
[results release];
[request release];
我似乎无法弄清楚出了什么问题。任何提示或建议将不胜感激。
当我在调试时查看persistanceStoreCoordinator、managedObjectContext、结果数组(NSArray)的实例时,我可以看到它似乎包含所有这些的0条记录。所以我很困惑。
注意:Testing.sqlite 文件包含条目。
在此先感谢,马特