我有一个应用程序,我需要维护一个ORM类型的模型,并代表一个实体(有一个图像,一些文本字段)。客户希望我在应用程序的构建中包含一些tyoe(Entity)项,因此它们应该在下载时可用,并使用户能够下载更多项目。我想过使用Core Data并创建一个模型。 我的问题是: 1:这是一个好方法吗? 2:如果我做这个模型,并定义这个实体,我可以在Xcode中手动输入实体类型的静态项吗?因为它们在本地可用,所以我不想在某些UIView的viewdidload方法中循环它们!这有点像在定义表后使用SQL数据库,您可以在该数据库中输入行。
答案 0 :(得分:1)
您可以实现逻辑(在代码中)以在Core Data持久性存储中插入默认的Entity对象,然后仅在启动时数据库为空时才执行该逻辑。您可以将此检查添加到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;
}
插入默认实体的最佳方法取决于它们的数量,更改的可能性等等。同样,如果有很多实体,我上面提到的查询将不是理想的,因为我正在获取他们都只是为了看看是否有。这只是让您了解该方法,并且必须根据特定的数据量进行优化。
答案 1 :(得分:0)
最简单的方法是简单地创建应用程序,就像您没有提供默认内容一样。然后在模拟器中运行您的应用程序并添加一些内容。现在停止您的应用程序,在Mac上找到数据文件,将其复制到项目中,然后将其添加到项目资源中。在应用程序的启动过程中放入一些代码,将文件从bundle目录复制到文档目录中,如果没有那么一个。