CoreData,定义模型,静态数据

时间:2013-06-08 21:51:56

标签: ios core-data

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

2 个答案:

答案 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目录复制到文档目录中,如果没有那么一个。