我有一个应用程序,我需要在其中维护 ORM 类型的模型,并表示一个实体(其中有图像、一些文本字段)。客户希望我将 tyoe (实体)的一些项目合并到应用程序的构建中,因此它们在下载时应该可用,并让用户能够下载更多项目。我想到使用核心数据并创建一个模型。 我的问题是: 1:这是一个好方法吗? 2:如果我做这个模型,并定义这个实体,我可以在Xcode中手动输入Entity类型的静态项吗?因为它们在本地可用,所以我不想在某些 UIView 的 viewdidload 方法中循环它们!。这有点像在定义表后使用 SQL 数据库,您可以在该数据库中输入行。
最佳答案
您可以实现逻辑(在代码中)以将默认实体对象插入核心数据持久性存储中,然后仅在数据库启动时为空时才执行该逻辑。您可以将此检查添加到任何 Core Data 项目的 Xcode 生成的应用程序委托(delegate)中,执行如下操作:
- (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;
}
插入默认实体的最佳方法取决于有多少实体、它们更改的可能性等。同样,如果有很多实体,我上面包含的查询也不是理想的,因为我正在获取他们只是为了看看有没有。这只是让您了解该方法,并且必须根据特定的数据量进行优化。
关于ios - CoreData,定义模型,静态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17004216/