Tag: 核心数据

iOS CoreData – 用现有索引预填充数据库

我正在build立一个项目,我需要用现有数据预先填充一个coredata数据库。 我build立了一个parsing器来创buildiOS模拟器中的sqlite文件,一切工作正常。 我正在使用一个实体,并且其中一个属性被索引。 将我的数据文件parsing为核心数据后的性能非常好,一切都很好。 现在我正在使用相同的数据模型,相同的索引等项目中生成的sqlite文件(〜200Mb)…和第一次启动时我复制数据库文件预填充数据 NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"myproject" ofType:@"sqlite"]; NSString *storePath = [[[self applicationDocumentsDirectory] path] stringByAppendingPathComponent: @"myproject.sqlite"]; NSError *error; if (![[NSFileManager defaultManager] fileExistsAtPath:storePath]) { if ([[NSFileManager defaultManager] copyItemAtPath:defaultStorePath toPath:storePath error:&error]) NSLog(@"Copied starting data to %@", storePath); else NSLog(@"Error copying default DB to %@ (%@)", storePath, error); } 复制工作正常,数据可以正常访问。 但是performance糟透了,索引显然没有被使用。 看看复制操作后的sqlite文件的大小,它从200Mb到120Mb。 在模型中一切看起来都不错,需要被索引的东西被检查为索引。 1)有没有办法索引数据不会被删除时复制SQLite? […]

核心数据存储arrays属性或与文件或关系实体一起工作

我正在努力工作很长一段时间的核心数据。 我读了很多关于这个的教程,我问了很多问题。 最后我开始研究核心数据 通过本指南: www.appcoda.com/introduction-to-core-data/ 而现在我卡住了! 我想创build这种属性,数组。 有人告诉我,这是一个不好的方法来存储有关属性的数组。 这些工作与一个关系。 但是这里的问题。 如果你看指南,它不会创build文件(类)实体 和所有其他指南。 是的,创build文件,所以他们没有帮助我,因为我没有我的实体文件。 有没有办法创build这样的关系行为像一个属性数组,而不必我做文件创build实体? 因为我的项目已经很大了。

devise这个核心数据库的好方法是什么?

我正在使用核心数据的iPhone应用程序。 数据包括大量的人。 每个人都会有一些相同的属性。 名字,姓氏,年龄和更多。 那么这些人将被分成几类。 我有不同类别的人的问题将有不同的属性。 例如 人A将在类别A中,并且将具有属性a,b,c 人B将在B类,并将有b,c,d分区 人C将在类别b和c中,并且将具有属性c,d,e 我想有实体人 实体类别 实体personattributes将存储属性为所有的一次,不适用于这个人将只是null。 在代码中,我会知道如果这个人是类别a,他只会有属性a,b,c 这将是一个好的devise,否则我将需要为每个类别单独的属性实体 提前致谢!

rest套件坚持/性能问题与多重MOCs

这是我第一次使用RestKit和多个MOC的新版本,所以这让我有点难住。 我使用RestKit 0.20-pre5,并通过RestKit操作添加托pipe对象以及在整个应用程序中手动添加。 RestKits提供两个MOC来pipe理性能:mainQueue和PersistantStore对象上下文。 从检查RestKits代码中,所有新的被pipe理对象被保存到mainQueue MOC(基于RKObjectManager行433和各种指针地址的检查)。 由RestKit创build的对象得到保持良好(当然在调用保存之后),但是每当我在同一个mainQueue MOC中创build自己的ManagedObjects并保存它时,它们在我重新启动应用程序时不会保留。 (我经常保存有关的MOC) 这就是持久存储的地方。每当我保存持久存储与mainQueue MOC一起时,数据将持续存在。 我想这与RKManagedObjectStore合并更改有关,只要我调用保存在persistantStoreMOC(通过通知)所以…一切都很好? 问题是每当我保存两个上下文都有一个明显的滞后,至less持续1秒(它可以变化到3!)。 这种滞后似乎增加了我创build的NSManagedObjects。 我已经运行仪器,没有内存问题。 我必须错误地使用RestKits核心数据的实现。 对于我使用以下方法保存的logging: – (void)saveContext { __block BOOL _blockSuccess; __block NSError *_blockError; NSManagedObjectContext *persistantContext = [[[RKObjectManager sharedManager] managedObjectStore] persistentStoreManagedObjectContext]; [globalManagedObjectContext performBlockAndWait:^{ _blockSuccess = [globalManagedObjectContext save:&_blockError]; }]; if (! _blockSuccess) NSLog(@"Failed to save context: %@", _blockError); [persistantContext performBlock:^{ _blockSuccess = [persistantContext save:&_blockError]; […]

无法使用核心数据从DynamoDB中提取相关项目

我有两个实体,两者之间有一对一的关系。 在testing中,我可以创build这两个实体,join并保存它们。 数据按预期显示在DynamoDB中,并显示相应的ID以显示两者是相关的。 然后我试图找回物品。 我对返回的其中一个项目执行获取请求,并且可以成功logging它的标识符。 但是,如果我试图logging相关的实体的标识符,我期望已经隐式获取我得到以下exception: 2013-01-17 15:00:13.936 DJ[10995:c07] DynamoDBResponse.m|-[DynamoDBResponse connectionDidFinishLoading:]|62|Response Body: {"__type":"com.amazon.coral.validate#ValidationException","message":"1 validation error detected: Value null at 'key.hashKeyElement' failed to satisfy constraint: Member must not be null"} 2013-01-17 15:00:13.936 DJ[10995:c07] DynamoDBResponse.m|-[DynamoDBResponse connectionDidFinishLoading:]|92|Returned CRC32: 650439770, Calculated CRC32: 650439770 2013-01-17 15:00:13.937 DJ[10995:c07] AmazonRequestDelegate.m|-[AmazonRequestDelegate request:didFailWithServiceException:]|74|didFailWithServiceException 2013-01-17 15:00:13.937 DJ[10995:c07] DynamoDBWebServiceClient.m|-[DynamoDBWebServiceClient invoke:rawRequest:unmarshallerDelegate:]|131|Response Status Code : 400 2013-01-17 15:00:13.938 […]

核心数据:插入对象崩溃在全局队列

我有一个非常简单的核心数据演示,其中只有一个button。 当我点击“运行”button时,应用程序在全局队列中运行的for循环中创build10,000个对象。 更新更多的细节:如果我把主循环for循环,它运行良好。 更新我的意图:我知道MOC不是线程安全的,但根据Apple文档 ,我们也可以使用串行队列来访问MOC,并且串行队列使用多个线程。 在这里我创build了核心数据堆栈: #pragma mark – Core Data Stack – (NSManagedObjectContext *)managedObjectContext { if (nil != _managedObjectContext) { return _managedObjectContext; } _managedObjectContext = [[NSManagedObjectContext alloc] init]; if (self.persistentStoreCoordinator) { [_managedObjectContext setPersistentStoreCoordinator:self.persistentStoreCoordinator]; } return _managedObjectContext; } – (NSManagedObjectModel *)managedObjectModel { if (nil != _managedObjectModel) { return _managedObjectModel; } _managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; return […]

用iCloud集成备份Core Data数据库有没有好的方法?

如果CoreData sqlite + iCloud损坏,是否有从iCloud备份我的sqlite信息的好方法? 将.sqlite复制到另一个位置? 当iCloud损坏时,从.sqlite中读取数据以创build一个新的iCloud sqlite?

添加属性到多对多的关系?

我一直在使用核心数据build模我的数据库。 我有两个在许多关系中的实体。 每个人可以有很多地址,每个地址上可以有多个人住。 现在我想添加属性到这个关系。 比如一个人的地址会有标签在家里,其他人的地址会有标签的妈妈的地方。 我不能在地址实体上添加这个属性,因为相同的地址对不同的人有不同的标签。 既然关系是像NSSet一样build模的,我没有办法做到我想要的。 这可以以某种方式完成?

应用程序更新后的Coredata

我正在尝试为我的应用程序实现一个stream程,以便在需要时更新应用程序,更新我的意思是在设备中下载新的应用程序。 问题是我正在使用CoreData来存储第一次启动时带来的服务器数据,旧版本和新版本之间我已经为DB添加了一些实体和一些旧实体的属性。 这就产生了冲突,因为我不知道如何处理迁移和/或任何可以为我提供在结构发生变化时重新创build数据库的能力的事情。 现在,如果我更新具有相同数据库结构的应用程序,该应用程序工作正常,但如果我修改它的应用程序崩溃,如预期的那样。 有什么想法吗?

Swift 2.1核心数据 – 保存具有一对多关系的数据,但如果已经存在,则不要添加等值数据

我有一个ViewController创build一个新的配方数据。 要创build一个新的配方,用户需要填写标题,配料等,并select其类别。 为此,我build立了一对多关系的类别和食谱实体。 在创build函数中,我将需要进行以下search以查看类别实体是否已具有selectedCategory的值。 如果selectedCategory已经存在于Category实体中,我需要find它的索引并将该类别分配给Recipe实体,但是我不知道在这里需要写什么代码。 for category in categories { if category == selectedCategory { /* if selectedCategory already exists in Category entity, find its index and assign that category to Recipe entity.*/ } else { category.name = selectedCategory recipe.category = category } } context.insertObject(recipe) do { try context.save() } catch { print("Could not save […]