Tag: 核心数据

iPhone“自动轻量级移植”期间发生的“源存储模式找不到”?

我真的陷入了iPhone应用程序从V1到V2的升级testing。 我有IPA版本,我正在通过iTunes专门分发到我的iPhone设备,一个用于v1版本的应用程序,另一个用于v2版本。 注意: v1安装在我的设备上运行良好 如果我删除V1和部署V2(所以没有迁移),那么它工作正常 当我部署v2,而v1已经在那里,我得到的错误:“原因=无法find源存储模型” 来自错误的片段… * reason=**Can't find model for source store**}, { URL = "file://localhost/var/mobile/Applications/AAAAF424-D6ED-40FE-AB8D-66879386739D/Documents/MyApp.sqlite"; metadata = { NSPersistenceFrameworkVersion = 320; <cut> 当我使用“手机磁盘”来看我的设备时,我看到有Documents / MyApp.sqlite文件 问题 – 任何想法如何解决这个问题? 我可以在这里做什么样的debugging/分析? 让我知道如果你需要更多的信息。 我所做的概述是: 没有为我的核心数据模型设置一个版本(即在版本的时候没有真正意识到,所以没有设置一个版本),将我的v1应用程序部署到AppStore。 对于v2而言,唯一的附加变化是在一个模型上的一个新属性 所以对于V2版本我所做的是: 重新创build了一个新的核心数据模型 为该模型创build了一个v1版本 创build了v1的对象/属性 保存 为该模型创build了一个v2版本 创build了一个额外的属性 保存 重新创build托pipe对象类 更新了代码,以便将选项置于每个http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweight.html#//apple_ref/doc/uid/TP40008426-SW1调用addPersistentStoreWithType PS更全面的错误版本,如果这有助于 – 这一次它来自模拟器上的迁移错误 , reason=Can't find model for source […]

NSPredicate与string完全匹配

我有这样一个NSPredicate: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entity.name CONTAINS %@", myString]; 但是,这将返回包含该string的任何东西。 例如:如果我的entity.name的其中: text texttwo textthree randomtext 而myString是text那么所有这些string将匹配。 我喜欢它,如果myString是text它只会返回名称text的第一个对象,如果myString是randomtext text ,它将返回名称为randomtext的第四个对象。 我也正在寻找它是不区分大小写 ,它忽略空白

RestKit并以NSManagedObject方式保存到CoreData

我正在使用RestKit ,我想parsing和保存元素到核心数据。 我有两个json文件: 第一(类别): [ { "cat_id": 3371, "cat_name": "myName", "image": 762 }, { "cat_id": 3367, "cat_name": "anotherName", "image": 617 } ] 和第二(元素): [ { "art_id": "1", "node": { "author": "name" }, "small_url": 0 }, { "art_id": "12", "node": { "author": "anotherName" }, "small_url": 0 } ] 所以基本的想法是每个类别都有一些内部元素。 所以这是我的CoreData结构: 我已经下载了restkit示例,并使用TwitterCoreData示例。 我的代码是: AppDelegeta.m – (BOOL)application:(UIApplication *)application […]

核心数据请求的分页结果

我有一个相对简单的核心数据sqlite数据库。 我试图一次从DB页面获取结果。 NSFetchRequest* request = [[[NSFetchRequest alloc] init] autorelease]; [request setEntity:[…]]; [request setPredicate:[NSPredicate predicateWithFormat:@"flaggedTime != nil"]]; NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"flaggedTime" ascending:NO]; [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; [request setFetchLimit:pageSize]; [request setFetchOffset:((pageIndex – 1) * pageSize)]; NSArray* results = [self.context executeFetchRequest:request error:NULL]; pageSize是30,testing数据的pageIndex是1,2,3或4(DB中约有80个项目,所以pageIndex = 4应该不返回任何项目)。 谓词和sorting工作正常,结果成功返回。 取限制也可以正常工作。 没有错误返回。 问题:我总是从第一页得到结果,就像没有设置fetchOffset一样。 我试图删除谓词和sorting,但无济于事。 唯一的情况,当我可以使fetchOffset的工作是当我使用30以下的值。当然,这是毫无意义的分页… 有人知道为什么吗? 我会很感激每一个答案。 更新:我正在谈论iOS。 testing4.2和5.0。 更新2:简化问题。 NSFetchRequest* request […]

NSFetchedResultsController和NSOrderedSet关系

我有一个问题(理解问题是诚实)与NSFetchedResultsController和iOS 5中提供的新的NSOrderedSet关系。 我有下面的数据模型(好吧,我真正的不是抽屉和袜子!)但是这是一个简单的例子: 抽屉和袜子都是核心数据模型/商店中的NSManagedObjects。 在Drawer里socks关系是一个有序的对 socks关系。 这个想法是,袜子在特定的顺序在抽屉里。 在Sock的drawer关系是socks关系的socks 。 在一个UIViewController中,我绘制了一个基于这些实体的UITableView。 我使用NSFetchedResultsController来提供表格。 – (NSFetchedResultsController *)fetchedResultsController1 { if (_fetchedResultsController1 != nil) { return _fetchedResultsController1; } NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Sock" inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]]; [fetchRequest setEntity:entity]; NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"drawer.socks" ascending:YES]; [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]]; self.fetchedResultsController1 = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[NSManagedObjectContext MR_defaultContext] […]

iCloud + CoreData – 如何避免预填充的数据重复?

我有一个iCloud鞋盒应用程序的问题,希望有人可以帮助我(我已经花了很多小时的战斗)。 应用程序: – 一个简单的库样式应用程序 – 包含一组类别(Cat1 CatN),每个类别包含项目(Item1 … ItemM)。 我用苹果的iPhoneCoreDataRecipes来设置iCloud CoreData堆栈。 除了iCloud之外,一切工作都非常完美 – 除非第一次打开应用程序(当时他也可以脱机),否则用户可以开始使用一些预先填充的空白类别。 这是魔鬼。 这是我做的 – 一旦我的persistentStoreCoordinator设置我发送通知 dispatch_async(dispatch_get_main_queue(), ^{ [[NSNotificationCenter defaultCenter] postNotificationName: @"RefetchAllDatabaseData" object: self userInfo: nil]; }); 这是由我的MasterViewController收到的。 当收到通知时,MasterViewController会检查存储器中的类别数量。 如果可用类别的数量等于0,则插入预填充类别。 仅供参考 – 我使用NSMergeByPropertyObjectTrumpMergePolicy为我的ManagedObjectContext 问题:这适用于第一台设备。 但是对于第二台设备,来自iCloud的默认类别经常比已经设置的persistentStoreCoordinator(以及由第二设备插入的默认类别)晚收到。 最后,我在这两个设备上有两组同名的类别。 任何想法如何可以解决? 试过的解决scheme:我尝试了2个策略来解决这个问题。 两者都以相同的方式开始。 我打电话之后 [moc mergeChangesFromContextDidSaveNotification: note]; 我打电话 [self materializeKeysWithUserInfo: note.userInfo forContext: moc]; 非常感谢来自https://devforums.apple.com/thread/126670?start=400&tstart=0的 Jose Ines Cantu […]

在iOS 8扩展中访问核心数据SQL数据库(在应用程序和Widget扩展之间共享数据)

问题: 无法在“今日视图”中的“Widget扩展”中访问应用程序的“核心数据”数据库。 应用程序本身能够在iOS 8下正常读写数据库,但扩展将无法创build存储,导致错误,无法写入文件。 日志如下: Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn't be completed. (Cocoa error 512.)" reason = "Failed to create file; code = 2

CoreData获得不同的属性值

我试图将我的NSFetchRequest设置为核心数据来检索实体中特定属性的唯一值。 即 具有以下信息的实体: name | rate | factor | _______|______|________| John | 3.2 | 4 | Betty | 5.5 | 7 | Betty | 2.1 | 2 | Betty | 3.1 | 2 | Edward | 4.5 | 5 | John | 2.3 | 4 | 我将如何设置请求返回一个数组只是:约翰,贝蒂,爱德华?

使用XMPPFramework为ios存储消息?

我不确定如何使用XMPPFramework的核心数据来存储传入的消息。 有没有人有任何教程如何做到这一点? 我看到用户对象,这反过来可以有很多“资源”。 是否收到每条消息应该是我创build并保留的新资源? 我不知道什么是我的责任,框架提供了什么关于消息历史的部分。 我可以拦截每个传入的消息。 那么我是否应该使用核心数据在消息表中创build和存储每条消息? 我有一个消息实体。 每个XMPPUser都有一个Message对象的数组。 但是,那么我不会在自己的解决scheme,这将违背框架? 谢谢!

什么是NSManagedObjectContext的performBlock:用于?

在iOS 5中, NSManagedObjectContext有一些新的方法, performBlock:和performBlockAndWait: 这些方法实际使用的是什么? 他们在旧版本中取代什么? 应该传递什么样的信息给他们? 我如何决定使用哪个? 如果有人使用它的一些例子,那就太好了。