0

我有一个应用程序,我需要在其中维护一种 ORM 模型,并表示一个实体(它有一个图像,一些文本字段)。客户希望我在应用程序的构建中加入一些 tyoe (Entity) 项目,因此它们在下载时应该可用,并让用户能够下载更多项目。我想到了使用 Core Data 并创建一个模型。我的问题是: 1:有什么好方法吗?2:如果我做这个模型,并且定义了这个实体,我可以在Xcode中手动输入Entity类型的静态项吗?因为它们在本地可用,所以我不想在某些 UIView 的 viewdidload 方法中循环它们!这有点像在定义表后使用 SQL 数据库,您可以在该数据库中输入行。

4

2 回答 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 回答