问题标签 [nsmanagedobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 为什么我无法使用此代码从委托中获取上下文?
我从以下代码中得到一个令人讨厌的模糊错误:
context
在 .h 文件中被定义为 aNSManagedObjectContext
并且在委托中是相同的。似乎包含了所有正确的文件(除了<CoreData/CoreData.h>
.m 文件 - 但无论是否包含,程序都会引发相同的问题。它包含在头文件中。)
包括所有正确的框架和东西——当我开始项目时,我选择了“使用 coredata 来管理数据”或其他任何东西。那么肯定不应该有问题吗?
有没有更好的方法来做我想做的事情?基本上我不想一直通过不同的类传递上下文,直到我最终想要使用它(存储数据是我应用程序的一小部分)。
在控制台中,我得到的错误是:
如果我注释掉这条线:context = [delegate managedObjectContext];
那么一切似乎都很好。(目前我还没有实际使用任何 coredata 或任何东西,所以没有更多与之相关的代码。
感谢任何可以提供帮助或对此提供一些见解的人 - 它是如此复杂。
编辑:我的应用委托文件方法:
再次编辑:
是错误所在的行。我不确定这是什么类型的文件,但我确定它显然没有找到它或其他东西......:/我应该做什么的任何想法?
@kiamlaluno - 很抱歉回滚你的编辑,不是故意的,只是想看看你改变了什么,并认为这会告诉我......但它显然完全删除了它们。哈哈。
编辑构建结果:
objective-c - NSFetchedResultsController 和 NSManagedObjectIDResultType 崩溃
我目前正在开发一个 ipad 应用程序,在该应用程序中我使用核心数据获取大量数据。为了保持低内存配置,我将请求结果类型设置为 NSManagedObjectIDResultType 并在需要真实数据时使用 -objectWithID: 方法获取对象。
一切都按预期工作。问题在于从我的表视图(从上下文)中添加/删除对象时。这是我在 tableView 中调用的一段代码:commitEditingStyle:forRowAtIndexPath:
它向我抛出了一个异常:“ * 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'* -[_NSObjectID_48_0 objectID]:无法识别的选择器发送到实例 0x5e56900'”
痕迹:
我认为这是 NSFetchedResultsController 和 NSManagedObjectIDs 的问题。当我将其委托设置为 nil 时,它不会崩溃(即使是空委托方法也会崩溃)。
任何想法?如果我摆脱 NSFetchedResultsController 并通过观察 NSManagedObjectContext 通知手动进行更新,这会是一个好主意吗?
iphone - 核心数据:NSManagedObject 添加值“forKey” - NSNumber 截断。选择?
我知道 NSNumber 不能超过 1/10 的位置。我可以使用什么替代将双精度(经度/纬度)添加到 Core Data 中?直接使用 double 不起作用,并且 NSNumber 会截断该值。
iphone - 无法将预填充的 sql 数据库保存到核心数据 sql 数据库:找不到 managedObjectModel
我的程序需要使用一个预填充的 sql 数据库,然后将记录保存到应用程序的数据库中。不幸的是,由于某种原因,应用程序在应用程序委托中退出了此方法:
似乎应用程序找不到有效的 managedObjectModel_,或者它不存在,或者没有创建一个。我该如何解决这个问题?
我在控制台上收到的错误消息之一是:由于未捕获的异常原因而终止应用程序:[NSKeyedUnarchiver initForReadingWithData:]
其中一部分我已经缩小到 NSManagedObject,因为似乎没有创建或找到一个。
其他可能有用的信息:我添加了一个实体并定义了许多其他核心数据教程中描述的属性以下是定义我的实体的类:
core-data - NSManagedObject 的字符串属性长度的 NSPredicate
有人可以帮我定义一个谓词,它只返回 NSManagedObject 的谁的“字母”属性长度在一定范围内吗?
这是我一直在尝试的示例,我感觉它是 letters.length 符号,我也尝试了 kvc letters.@length 没有成功..我做错了什么?
cocoa - NSManagedObject 和 KVO 与文档
我有一个自定义NSManagedObject
子类,比如Person
. 我还UIView
注册了一个-addObserver:forKeyPath:options:context:
来观察 a 的各种属性Person
,其中一些是持久的,如“名称”,而另一些只是与核心数据无关的愚蠢的 KVO 兼容访问器,如“饮酒”。
一切正常。每当我发送-getDrunk
或设置name
属性时,视图都会收到通知。我是一个快乐的人,除了当我阅读NSManagedObject
文档时:
事实 1. 如果接收器为键的键值观察更改通知提供自动支持,则为 YES,否则为 NO。
事实 2. NSManagedObject 的默认实现对建模属性返回 NO,对未建模属性返回 YES。
现在我正在努力从文档中解析上述两个事实。检查事实 2 很容易,并且类 Person 确实为 @"name" 返回 NO,为 @"drinking" 返回 YES。但是,当名称更改时,视图如何得到通知?KVO 文档清楚地说,
使用自动观察者通知,当通过键值编码和键值编码兼容的方法改变属性时,没有必要通过调用 willChangeValueForKey: 和 didChangeValueForKey: 对属性的更改括起来。
因此,如果 Person 从 @"name" 返回 NO +automaticallyNotifiesObserversForKey:
,看来我必须手动将名称设置器包装在will/didChangeValueForKey:
KVO 中才能工作。但是,KVO 工作得很好。我错过了什么?如果似乎没有改变标准 KVO 行为,那么NSManagedObject
覆盖和记录它有什么意义?+automaticallyNotifiesObserversForKey:
请帮助我恢复理智。
objective-c - NSFetchedResultsController 总是返回 NSManagedObject 对象而不是自定义
我正在使用 CoreData 并定义了一个实体 ContactList,它是我使用 XCode xcdatamodel 工具(或任何你称之为内置的东西:)创建的。我还将实体的类名称设置为“ContactList”。然后我使用rentzsch 的mogenerator ( http://github.com/rentzsch/mogenerator ) 来生成我的自定义类文件,并将简单的方法“toString”添加到我的ContactList 类中。
fetchedResultsController 回调非常标准,如下所示:
现在,当我启动我的应用程序并尝试在“ContactList”对象上调用该方法时,我又从 NSFetchedResultsController 获得了该方法,我得到了
如消息所示,不知何故 NSFetchedResultsController 不返回“ContactList”对象,而是返回更通用的 NSManagedObject。
有谁知道为什么以及如何解决这个问题???
iphone - 关于获取一个新的 NSManagedObject 对象
我观看了 Core Data 指南,有两种方法可以获取新的 NSManagedObject 实例。
- - NSManagedObject 类的initWithEntity:insertIntoManagedObjectContext:
- + insertnewObjectForEntityForName:inManagedObjectContext:的 NSEntityDescription 类
两种方法有什么区别吗?或者,它们只是在任何条件下获取新的 NSManagedObject 的意思相同。
iphone - 具有多个表的 iPhone Core 数据钻取
我有一个我正在开发的应用程序,它有 2 个通过关系(多对多)链接的实体。我目前设置了应用程序,以便 rootviewcontroller 控制第一个实体中的 NSManagedObject(获取、设置、删除数据)。当我深入研究第一个实体时,它会转到第二个视图(secondviewcontroller),它也有一个表。当我在这个视图控制器上添加一个 NSManagedObject 时,我得到了一个错误,我认为这是因为我有 2 个 NSManagedObjects。然后我求助于引用 rootviewcontroller 的 NSManagedObject,它确实允许我在第二个视图中获取和显示实体,但是由于它引用了第一个视图,它带回了第一个实体,而不是第二个。
我如何设法在 2 个视图上分别访问来自实体 1 和实体 2 的数据的 2 个表。作为旁注,我如何让 NSPredicate 过滤单击表 1 中的一行的结果,以仅显示与单击的实体 1 相关的实体 2。
对于大量的解释感到抱歉,但它(对我而言)很复杂,我需要弄清楚,因为我已经这样做了 3 多天,并且没有谷歌搜索、书籍、博客等详细介绍了我需要的细节!我一定遗漏了一些明显的东西!
概述:
实体1:名称关系1
实体2:名称关系1;
rootviewcontroller:NSManagedObject 表填充了实体 1
secondviewcontroller:有需要用实体 2 填充的表,这些实体 2 与单击的实体 1 相关
当前,在 secondviewcontroller 中的 rootviewcontroller 上的实例返回实体 1 而不是 2 的列表。
在此先谢谢大家 :) 我知道我应该发布一些到目前为止我所做的代码,但据我所知,我所写的内容从根本上肯定是错误的!
core-data - 如何在 Core Data 中制作 NSManagedObject 的深拷贝
我正在尝试复制核心数据中现有的 NSManagedObject 和相关子对象。我似乎找不到一个简单的方法来做到这一点。
我有一个从核心数据数据库填充的 NSArrayController。我想在 selectionIndex 处获取对象并进行深层复制,使其与同一个父对象相关并复制所有子对象。
任何帮助表示赞赏!
感谢 TechZen 的链接。我使用了该站点的示例代码并使用了以下调用代码: