Questions tagged «core-data»

Core Data是Apple的对象建模和持久性框架,适用于iOS,iPadOS,tvOS,watchOS和macOS。Xcode提供了一个对象模型编辑器,用于指定实体,属性和关系。

13
找不到NSManagedObject的特定子类
我正在使用Core Data开发应用程序。当我使用以下方法创建实例时: let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: appDelegate.managedObjectContext) let user = User(entity: entity, insertIntoManagedObjectContext: appDelegate.managedObjectContext) 我在日志中收到警告: CoreData: warning: Unable to load class named 'User' for entity 'User'. Class not found, using default NSManagedObject instead. 我该如何解决? 还有另一个问题,如何在NSManagedObject子类中定义实例方法? 编辑: 我已指定实体的类别,如以下屏幕截图所示:

8
NSPredicate:按NSDate属性的天筛选对象
我有一个带有NSDate属性的Core Data模型。我想按天筛选数据库。我认为解决方案将涉及NSPredicate,但我不确定如何将它们放在一起。 我知道如何NSDate使用NSDateComponents和比较两个星期几NSCalendar,但是如何用和过滤呢NSPredicate? 也许我需要在NSManagedObject子类上创建一个类别,该类别可以返回仅包含年,月和日的空日期。然后我可以在一个NSPredicate。这是您的建议,还是更简单?

2
在executeFetchRequest上“枚举时对集合进行了变异”
我一直困扰着一个小时,并且已经在stackoverflow上阅读了有关此问题的所有内容(并应用了发现的所有建议),现在我正式需要帮助。; o) 这是上下文: 在我的iPhone项目中,我需要在后台导入数据并将其插入到托管对象上下文中。遵循此处找到的建议,这是我正在做的事情: 保存主moc 使用主Moc使用的持久存储协调器实例化背景Moc 将我的控制器注册为后台moc的NSManagedObjectContextDidSaveNotification通知的观察者 在后台线程上调用import方法 每次接收到数据时,将其插入后台Moc 导入所有数据后,保存后台Moc 将更改合并到主线程中的主线程中 注销我的控制器作为通知的观察者 重置并释放后台Moc 有时(随机),例外情况... *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x5e0b930> was mutated while being enumerated... 当我在后台Moc上调用executeFetchRequest来检查导入的数据是否已存在于数据库中时,会抛出...。我想知道是什么使集合发生了变化,因为没有任何方法可以在import方法之外运行。 我已经包含了控制器和测试实体的全部代码(我的项目由这两个类和应用程序委托组成,它们未经修改): // // RootViewController.h // FK1 // // Created by Eric on 09/08/10. // Copyright (c) 2010 …

3
如何从特定的对象ID获取核心数据对象?
我可以使用以下代码轻松地在Core Data中获取对象的ID: NSManagedObjectID *moID = [managedObject objectID]; 但是,是否有一种方法可以通过给它提供特定的对象ID将其从核心数据存储中移出?我知道我可以使用NSFetchRequest来做到这一点,就像这样: NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext]; [fetchRequest setEntity:entity]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID = %@)", myObjectID]; [fetchRequest setPredicate:predicate]; 但是,我想以一种不会启动自己的获取请求的方式来执行此操作。有任何想法吗?

3
最佳实践-您自己的项目/应用程序的NSError域和代码
之前有一篇SO帖子,关于为您自己的框架设置错误域,但是关于为您自己的项目/应用设置错误域和自定义错误代码的最佳实践是什么? 例如,假设您正在使用具有大量验证的Core Data密集型应用程序,那么您应该坚持使用“现成的” Core Data错误代码(例如NSManagedObjectValidationErrorfrom CoreDataErrors.h),还是应该创建自己的错误代码MyAppErrors.h并使用更具特异性(即MyAppValidationErrorInvalidCombinationOfLimbs? 创建一个自定义错误域和一组错误代码可能会极大地使您的代码歧义化,但是维护起来是否过多的开销,是否需要担心错误代码编号冲突?还是这里还有其他问题?

2
使用Core Data,iCloud和CloudKit进行同步和备份以及它们如何协同工作
我正处于创建应用程序的早期阶段,我想在其中保存,同步和备份数据。该应用程序不会在数据库中仅存储数据的任何文件。它将是iOS 8及更高版本,因此我可以使用CloudKit。我做了一些研究,但仍不清楚Core Data,iCloud和CloudKit如何协同工作。 据了解,CloudKit只是从云中获取数据或从云中获取数据的一种方法。CloudKit只是与iCloud同步数据的另一种方式吗? 我的问题是: 如果确实使用CloudKit,是否还需要创建本地核心数据数据库? 如果是,它将自动与iCloud同步,还是我必须调用方法存储到两个地方? 如果数据仅存储在云中,则当iOS设备未连接到互联网时,用户将能够访问它。我读到CloudKit只有有限的缓存。 如果未启用iCloud帐户,该如何工作。 如果有人可以分解每种技术在离线和在线保存和同步核心数据数据库的过程中的作用。 我目前的理解是: 核心数据用于在本地存储数据 iCloud同步数据并存储在云中 CloudKit使您能够在云中存储和管理数据? 我希望我提供了足够的信息来解决这个问题。


2
Coredata错误“数据:<故障>”
我尝试使用以下代码从CoreData中提取数据 NSFetchRequest *request = [[NSFetchRequest alloc] init]; request.entity = [NSEntityDescription entityForName:@"Cave" inManagedObjectContext:self.context]; request.predicate = [NSPredicate predicateWithFormat:@"(latitude &gt; 0) AND (longitude &gt; 0)"]; NSError *error; NSLog(@"%@",[self.context executeFetchRequest:request error:&amp;error]); NSLog(@"%@",[error localizedDescription]); CoreData应该具有9个匹配的对象,并找到9个对象。所以谓词应该起作用,但是我在控制台中得到了 2011-09-05 07:41:42.267 CaveConditions[6930:11903] ( "&lt;NSManagedObject: 0x7368060&gt; (entity: Cave; id: 0x7367880 &lt;x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p31&gt; ; data: &lt;fault&gt;)", "&lt;NSManagedObject: 0x73547e0&gt; (entity: Cave; id: 0x7356e20 …
107 iphone  core-data 

9
如何将类型应用于NSFetchRequest实例?
在Swift 2中,以下代码正在运行: let request = NSFetchRequest(entityName: String) 但是在Swift 3中它给出了错误: 无法推断通用参数“ ResultType” 因为NSFetchRequest现在是通用类型。他们在文件中写道: let request: NSFetchRequest&lt;Animal&gt; = Animal.fetchRequest 因此,例如,如果我的结果类是Level我应该如何正确请求? 因为这不起作用: let request: NSFetchRequest&lt;Level&gt; = Level.fetchRequest
102 swift  core-data  swift3 

4
Xcode 4和核心数据:如何启用SQL调试
我正在使用通用的iOS应用程序,调试时希望在日志中看到原始SQL。这篇博客文章中有一些信息,说明如何为iOS Core Data开发启用原始SQL日志记录。给定的示例适用于Xcode 3,但我不清楚如何在Xcode 4中启用它。 我已经尝试过“产品”-&gt;“编辑方案”,并将“ -com.apple.CoreData.SQLDebug 1 ” 添加到“启动时传递的参数”,但是在日志中仍然看不到任何输出。不知道我是在错误的位置还是只是错误地传递了参数。
102 sql  ios  core-data  xcode4 

1
在iOS 5上实现快速高效的核心数据导入
问题:如何获取子上下文以查看更改在父上下文中的持久性,以便它们触发我的NSFetchedResultsController更新UI? 设置如下: 您有一个应用程序可以下载并添加大量XML数据(大约200万条记录,每个记录的大小均与正常文本的大小相同)。.sqlite文件的大小约为500 MB。将此内容添加到Core Data需要花费时间,但是您希望用户能够在数据逐步加载到数据存储中时使用该应用程序。用户必须看不见并且无法感知大量数据在四处移动,因此不会挂起,也不会抖动:滚动像黄油一样。尽管如此,该应用程序仍然有用,它添加了更多数据,因此我们不能永远等待将数据添加到Core Data存储中。在代码中,这意味着我真的很想避免在导入代码中使用如下代码: [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.25]]; 该应用程序仅是iOS 5,因此它需要支持的最慢的设备是iPhone 3GS。 这是到目前为止我用来开发当前解决方案的资源: Apple的核心数据编程指南:有效导入数据 使用自动释放池使内存减少 关系成本。导入平面,然后在最后修补关系 不要查询您是否可以提供帮助,它会以O(n ^ 2)的速度降低速度 批量导入:保存,重置,清空和重复 关闭导入时的撤消管理器 iDeveloper TV-核心数据性能 使用3种上下文:主,主和限制上下文类型 iDeveloper TV-Mac,iPhone和iPad的核心数据更新 使用performBlock在其他队列上运行保存可以使事情变得更快。 加密会使速度变慢,如果可以,请将其关闭。 Marcus Zarra导入和显示核心数据中的大数据集 您可以通过给当前的运行循环一些时间来减慢导入速度,从而使用户感觉平稳。 示例代码证明,可以进行大量导入并保持UI响应,但是速度不如3个上下文和异步保存到磁盘的速度快。 我目前的解决方案 我有3个NSManagedObjectContext实例: masterManagedObjectContext-这是具有NSPersistentStoreCoordinator并负责保存到磁盘的上下文。我这样做是为了使我的保存可以是异步的,因此非常快。我在启动时就这样创建它: masterManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; [masterManagedObjectContext setPersistentStoreCoordinator:coordinator]; mainManagedObjectContext-这是UI随处使用的上下文。它是masterManagedObjectContext的子级。我这样创建它: mainManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; [mainManagedObjectContext …

10
我需要做什么才能使Core Data自动迁移模型?
我已经阅读了有关用于Core Data模型的自动/轻量级迁移的文档-但是在实现它时遇到了问题。 据我了解,应用程序应该注意到它具有的模型和设备上已经存在的模型是不相同的。如果仅添加了属性或关系以及类似的简单更改,则应自动升级模型。 任何指针-我需要在Xcode中设置一些东西吗?
96 core-data 

27
无法使用nil模型创建NSPersistentStoreCoordinator
我第一次接触Core Data时,在设备上运行代码时遇到以下错误,但在模拟器上工作正常。 *由于未捕获的异常“ NSInvalidArgumentException”而终止应用程序,原因:“无法使用nil模型创建NSPersistentStoreCoordinator” 我的一些可能导致问题的方法: - (NSManagedObjectContext *)managedObjectContext { if (__managedObjectContext != nil) { return __managedObjectContext; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if (coordinator != nil) { __managedObjectContext = [[NSManagedObjectContext alloc] init]; [__managedObjectContext setPersistentStoreCoordinator:coordinator]; } return __managedObjectContext; } /** Returns the managed object model for the application. If the model …

12
CoreData:警告:无法加载名为的类
我正在使用Xcode 6.1将现有的Objective-C电视节目应用程序复制到新的Swift版本,并且CoreData出现了一些问题。 我创建了一个包含4个实体的模型,创建了它们的NSManagedObject子类(在Swift中),并且所有文件都设置了正确的应用程序目标(针对“编译源”)。 每当我尝试插入新实体时,我仍然会收到此错误: CoreData:警告:无法为实体“ Shows”加载名为“ Shows”的类。找不到类,而是使用默认的NSManagedObject。 一些评论: 当保存到Core Data时,我使用父子上下文方法来允许后台线程。我通过使用以下方法设置ManagedObjectContext来做到这一点: lazy var managedObjectContext: NSManagedObjectContext? = { // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause …

8
iPhone上的JSON和核心数据
我有一个核心数据对象图(由通过多对多关系链接的两个实体组成)。 作为一个相对缺乏经验的iPhone开发人员,我很好奇,是否有人可以推荐一种方法以及适合iPhone的JSON实现,这将使我能够: 将核心数据记录转换为JSON字符串(同时保持实体之间的关系);和 将JSON字符串转换回核心数据对象(再次保留实体之间的关系)。 在这一点上,我没有搜索到教程/代码示例,因此将不胜感激。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.