Tag: core data

从包含id的string形成NSPredicate

我有这个问题,我不知道如何写这个谓词。 我有一个名为联系人的实体,它有一个string属性“页”,让我们说 contact.pages = @"1,5,11,15,17"; 我的数据库中有很多联系人,而且我只想获取包含特定ID的这些联系人。 假设我只想获取这些联系人,哪些页面包含id @“1”。 我可以想到这样的事情, NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self.pages CONTAINS %@", _pageId]; 但我的问题是,这也会得到联系,例如有页= @“11,15”。 那么有关如何实现这一目标的任何想法? 任何build议,我将不胜感激,提前致谢!

链式expression式在Core Data中执行计算

首先:新年快乐:-) 我正在尝试做什么 我试图在核心数据中划分两个属性,然后计算这些分区的平均值。 属性由关键path(例如eur , usd , aud )指定。 示例:我有以下数据集: date eur usd aud —————————— 2010-01-01 0.5 1.0 1.5 2010-01-02 0.6 1.1 1.6 2010-01-03 0.4 1.0 1.3 将两个属性分开,例如eur / usd与下面的结果… divide eur / usd: —————— 2010-01-01 0.5 2010-01-02 0.54 2010-01-03 0.4 …然后计算这些数字的平均值(0.5 + 0.54 + 0.4)/3 = 0.48 我的代码 由于我想这些计算由Core Data直接执行,所以我创build了以下expression式和获取请求: NSExpression *fromCurrencyPathExpression = [NSExpression […]

核心数据,当NSFetchRequest返回NSDictionaryResultType时如何获取NSManagedObject的ObjectId?

我有一个NSFetchRequest返回NSDictionaryResultType的对象的属性。 是否有可能在这个字典中获得对象的ObjectId? 否则,我将需要使用NSManagedObjectResultType的返回types来运行查询,这对于大量返回的项目来说要慢得多。

用于打开商店的模型与用于创build商店的模型不兼容

我在xcode 3.2中创build了一个Core Data模型,在Xcode 4.2升级后,我添加了一个NSManagedObject子类的新实体(参考新实体)。 首先,它看起来很奇怪,因为它不在旧的那个组中。 这是我的xcode 4.2上的图片(AlkitabDB是我在xcode 3.2中创build的,EndeDB是当前xcode版本(4.2)的新版本: 第二件事,我放了它,然后我像第一个实体(旧的)一样访问第二个实体(新的实体),并出现标题错误。 这是错误: 2012-01-16 21:13:38.496 iHuria[55953:207] Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn't be completed. (Cocoa error 134100.)" UserInfo=0x8829cd0 {metadata=<CFBasicHash 0x882a370 [0x1839b38]>{type = immutable dict, count = 7, entries => 2 : <CFString 0x8829b90 [0x1839b38]>{contents = "NSStoreModelVersionIdentifiers"} = <CFArray 0x8829ff0 [0x1839b38]>{type = immutable, count = 0, values […]

GROUP BY与SUM()使用核心数据

我遇到了类似的问题,但没有一个有完整的例子来说明如何完成它。 我试图翻译的SQL查询是这样的: SELECT date, SUM(amount) FROM Table GROUP BY date; 我需要帮助debugging下面的代码(目前fetchRequest返回nil): entity = [NSEntityDescription entityForName:@"Table" inManagedObjectContext:self.managedObjectContext]; [fetchRequest setEntity:entity]; NSExpressionDescription* ex = [[NSExpressionDescription alloc] init]; [ex setExpression:[NSExpression expressionWithFormat:@"@sum.amount"]]; [ex setExpressionResultType:NSDecimalAttributeType]; [fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"date", ex, nil]]; [fetchRequest setPropertiesToGroupBy:[NSArray arrayWithObject:@"date"]]; [fetchRequest setResultType:NSDictionaryResultType ]; [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 这是错误的: 2012-09-28 13:58:46.319 App[12205:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', […]

在NSManagedObject子类中重复的符号错误

我只是用Core Data创build了一个演示项目。 我在我的数据模型中创build了一个实体Userinfo 。 现在我创build了这个实体的一个NSManagedObject子类。 Xcode自动生成了这4个类。 现在当我build立这个项目时,会抛出这个错误: 我已经尽我所知去除重复的错误,但没有任何帮助。 我认为它是一个Xcode错误。 请帮忙。

如何获取viewController的managedObjectContext,而不是从appDelegate获取?

最近我开始知道“你真的不应该调用AppDelegate来获取托pipe对象上下文”。 苹果公司也把这个build议放在他们的文档里 。 它是这样的: 视图控制器通常不应该从全局对象(如应用程序委托)中检索上下文,这使得应用程序架构变得僵化。 视图控制器也不应该为它自己的用途创build一个上下文(除非它是一个嵌套的上下文)。 这可能意味着使用控制器的上下文执行的操作不会注册到其他上下文中,因此不同的视图控制器将对数据有不同的观点。 此外,他们还提到了一些其他方法来获得背景。 到目前为止,我无法弄清楚他们想在那里说些什么。 任何人都可以提出这个问题。 任何代码片段支持声明将是最受欢迎的。 编辑 但有时,从应用程序或文档或视图控制器以外的地方检索上下文会更容易或更合适。 您可能在基于核心数据的应用程序中使用的几个对象保留对托pipe对象上下文的引用。 一个托pipe对象本身有一个对自己的上下文的引用,支持核心数据的各种控制器对象(例如数组和对象控制器(OS X中的NSArrayController和NSObjectController,以及iOS中的NSFetchedResultsController))也是如此。 从其中一个对象中检索上下文具有如下优点:如果重新构build应用程序,例如使用多个上下文,则代码可能保持有效。 例如,如果您有一个托pipe对象,并且要创build一个与之相关的新托pipe对象,则可以向原始对象请求托pipe对象上下文,并使用该对象创build新对象。 这将确保您创build的新对象与原始对象处于相同的上下文中。 究竟是什么? 相信它与下面Highly投票答案不相似。 有人能帮我理解这部分苹果文件吗?

我怎么知道一个`NSManagedObject`是否被删除?

我有一个NSManagedObject已被删除,并且包含该托pipe对象的上下文已被保存。 我明白,如果核心数据将要求持久性存储在下一次保存操作中删除对象,则返回YES 。 但是,由于保存已经发生, isDeleted返回NO 。 什么是一个很好的方法来告诉NSManagedObject是否已被删除,其中包含的上下文已被保存? (如果你想知道为什么引用被删除的pipe理对象的对象还没有意识到删除,那是因为删除和上下文保存是由执行删除操作并使用performSelectorOnMainThread:withObject:waitUntilDone:保存的后台线程启动的performSelectorOnMainThread:withObject:waitUntilDone: 。)

我应该如何将UIImage存储在我的Core Data数据库中?

我正在开发一个应用程序,需要大约100个图像或更多的预先插入核心数据数据库连同其他相关信息。 现在我可以通过写几行代码来轻松地添加其他数据,但是对于UIImage,我不确定如何在不编写大量代码的情况下执行此操作。 我想知道:无论如何要做到这一点很简单,或者如果没有最好的方法来实现这一点,用最less的努力。 另外,将图像存储在Core Data数据库中还是可以的,或者我们应该只保存本地文件系统上的图像地址?

具有谓词的NSFetchedResultsController忽略从不同NSManagedObjectContext合并的更改

我使用NSFetchedResultsController呈现表视图内容,它有一个谓词: [NSPredicate predicateWithFormat:@"visible == %@", [NSNumber numberWithBool:YES]] 在使用单独NSManagedObjectContext后台线程上,我更新了一些实体,并将其visible值从NO更改为YES 。 保存,合并主线程的NSManagedObjectContext更改。 但fetchedObjects不会改变。 另外控制器不会在-controller:didChangeObject:…上调用-controller:didChangeObject:… 如果实体在主线程上以相同的方式更新(我的testing应用程序调用相同的方法),一切都按预期工作。 另外通知的NSUpdatedObjectsKey包含这些对象。 目前唯一的解决scheme是find每个NSUpdatedObjectsKey实体: NSManagedObjectContext *context = … // main thread context [context existingObjectWithID:[object objectID] error:nil] 此问题仅适用于以前与谓词不匹配的更新对象。 我错过了什么明显的?