我有一个应用程序,我需要在其中维护一种 ORM 模型,并表示一个实体(它有一个图像,一些文本字段)。客户希望我在应用程序的构建中加入一些 tyoe (Entity) 项目,因此它们在下载时应该可用,并让用户能够下载更多项目。我想到了使用 Core Data 并创建一个模型。我的问题是: 1:有什么好方法吗?2:如果我做这个模型,并且定义了这个实体,我可以在Xcode中手动输入Entity类型的静态项吗?因为它们在本地可用,所以我不想在某些 UIView 的 viewdidload 方法中循环它们!这有点像在定义表后使用 SQL 数据库,您可以在该数据库中输入行。
问问题
89 次
2 回答
1
您可以实现逻辑(在代码中)将默认实体对象插入您的核心数据持久性存储中,然后仅当数据库在启动时为空时才执行该逻辑。您可以将此检查添加到 Xcode 生成的任何 Core Data 项目的应用程序委托中,执行如下操作:
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
// Beginning of code added to Xcode-generated app delegate
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Entity"];
NSArray *results = [_managedObjectContext executeFetchRequest:request error:NULL];
if ([results count] == 0) {
// Call method to insert default entities
}
// End of code added to Xcode-generated app delegate
return _managedObjectContext;
}
插入默认实体的最佳方法取决于有多少,它们改变的可能性等。同样,如果有很多实体,我上面包含的查询也不是理想的,因为我只是获取它们看看有没有。这只是让您了解该方法,并且必须根据特定数量的数据进行优化。
于 2013-06-09T00:41:59.203 回答
0
最简单的方法是像不提供默认内容一样简单地创建应用程序。然后在模拟器中运行您的应用程序并添加一些内容。现在停止您的应用程序,在您的 Mac 上找到数据文件,将其复制到您的项目中,并将其添加到项目资源中。如果还没有,请在应用程序的启动中添加一些代码,以将文件从捆绑目录复制到文档目录。
于 2013-06-08T22:14:46.457 回答