- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
代码如下:
- (void)willTurnIntoFault {
NSManagedObject *relatedObject = self.relatedObject;
if (relatedObject != nil && !relatedObject.isFault && !relatedObject.hasChanges) {
[relatedObject.managedObjectContext refreshObject:relatedObject mergeChanges:NO];
}
[super willTurnIntoFault];
}
这是崩溃:
Application Specific Information:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSObjectID_64_1 hasChanges]: unrecognized selector sent to instance 0x158601a0'
Last Exception Backtrace:
0 CoreFoundation 0x307bfe8b __exceptionPreprocess + 131
1 libobjc.A.dylib 0x3aab96c7 _objc_exception_throw + 39
2 CoreFoundation 0x307c37b7 -[NSObject(NSObject) doesNotRecognizeSelector:] + 203
3 CoreFoundation 0x307c20b7 ___forwarding___ + 707
4 CoreFoundation 0x30710e98 __CF_forwarding_prep_0 + 24
5 Moke 0x0017cd51 -[Status willTurnIntoFault] (Status.m:420)
6 CoreData 0x305356eb -[NSFaultHandler turnObject:intoFaultWithContext:] + 67
7 CoreData 0x305333bb -[NSManagedObject dealloc] + 75
8 CoreData 0x30532b85 -[_PFManagedObjectReferenceQueue _processReferenceQueue:] + 1557
9 CoreData 0x305393c7 -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] + 3795
10 CoreData 0x30532505 _performRunLoopAction + 317
11 CoreFoundation 0x3078af71 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 21
12 CoreFoundation 0x307888ff __CFRunLoopDoObservers + 287
13 CoreFoundation 0x30788c4b __CFRunLoopRun + 739
14 CoreFoundation 0x306f3541 _CFRunLoopRunSpecific + 525
15 CoreFoundation 0x306f3323 _CFRunLoopRunInMode + 107
16 GraphicsServices 0x3542a2eb _GSEventRunModal + 139
17 UIKit 0x32faa1e5 _UIApplicationMain + 1137
18 Moke 0x000f47e7 main (main.m:16)
19 libdyld.dylib 0x3afb2ab7 start + 3
这是 self
对象:
<Status: 0x16a705c0> (entity: Status; id: 0x16a31700 <x-coredata://66EAF889-7CD5-48C2-999E-5E15B84BF8FA/Status/p2235> ; data: {
ID = 3622738251833351;
relatedObject = "0x16a40340 <x-coredata://66EAF889-7CD5-48C2-999E-5E15B84BF8FA/Status/p2242>";
text = "...";
user = "0x16824200 <x-coredata://66EAF889-7CD5-48C2-999E-5E15B84BF8FA/User/p948>";
})
所以看起来在这个条件 !relatedObject.hasChanges
relatedObject
变成了 _NSObjectID_64_1
(它是 NSManagedObjectID
的子类>).但怎么可能呢?
PS:如果你好奇为什么它不会在 !relatedObject.isFault
崩溃,那是因为 _NSObjectID_64_1
确实实现了 ifFault
我的测试。
最佳答案
看起来您正在线程之间传输托管对象。尝试以这种方式增强您的代码:
//NSManagedObject *relatedObject = self.relatedObject;
NSManagedObject *relatedObject = [self.managedObjectContext existingObjectWithID:self.relatedObject.objectID error:nil];
关于ios - 一对一关系如何在 willTurnIntoFault 中退化为 NSManagedObjectID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835575/
我在使用一对一映射时遇到问题。我搜索了互联网并找到了许多解决方案,但没有一个令人满意。大多数示例都带有将父实例存储在子类中的开销。 我只想在具有外键约束关系的子类中使用父 ID,但不想在子类中保留任何
我有以下设置: Micronaut 3.x Java 15 我要更新的实体: @Setter @Getter @Entity @ToString @Table(name = "single_choic
我正在使用AVAudioPlayer制作MP3播放器。我有多种MP3声音,想一一播放。以下是我的应用程序的逻辑: ///// For playing 1st sound mp3Player = [[A
所以这就是问题所在。我有 2 个模型: 裁判级别和裁判 两个都有: class RefereeLevel(models.Model): level = models.PositiveSmall
我想将数组添加到列表或多维数组(不是一次全部...)。但是我真的不明白为什么这应该那么难。 可以说我有这个: string[] a = { "h", "b"}; string[] b
我有一个长度为 1000 的数字序列,我将其分成 100 个长度的序列。所以我最终得到了 901 个长度为 100 的序列。让前 900 个序列为 trainX。 trainY 是这些序列中的第 2
关键字:association 一对一映射(一个班级只有一个班主任) ?
所以,这是我第一次学习计算机语言。我选择了python和django。现在,我了解了 python 和 django 的许多基本概念。我可以使用 View 和所有其他内容创建新页面。但我仍然对这些关系
在一对一映射中,我编写了以下代码行。 @GenericGenerator(name = "generator", strategy = "foreign", parameters = @Paramet
我有两个如下所示的实体 @Data @EqualsAndHashCode(callSuper = true) @Entity @Table(name = "foo") @Audited @AuditO
我的问题很简单.. 假设有 2 个类..书籍和作者 假设一本书只能由一位作者撰写。 一个作家可以写很多本书。 假设作者有唯一的名字。 [两个作者不能同名] 现在..假设所有 hibernate\JPA
我正在尝试创建一个实体,如下所示 @Data public class Person { @Id private String id; @OneToMany(mapp
我有一个包含字段的Project表 ID PROJECT_BASELINE_ATTRIBUTES_ID (FK for table PROJECT_BASELINE_ATTR) 这个表有如下映射
我正在学习基本的 hibernate 教程。我正在尝试在 2 个表之间建立一对一的关系。当我尝试插入 Client 表时它起作用了,但是当我尝试做相反的事情时(插入 Facture 表)我得到了这个异
我已经在 hibernate 3 中使用注释完成了一对一映射,我有两张表“组”和“类别”。类别是预定义的。当用户选择类别和组时,CategoryId和goupid应该只插入组表中。 那么应该如何映射。
我使用Linux服务Fedora 4.14.33-51.37.amzn1.x86_64。我想使用 NAT 1 对 1。例如是否相同problem我的方案是:我的服务器有两个网络接口(interface
我正在尝试与实体 Revision 创建一对一、自引用、双向关系(哇),看起来像这个: /** * @Entity() * @Table(name="rev") */ class Revisio
我需要两个实体之间的链接,所以我使用一对一 @Entity @Table(name = "T_USER") public class User implements Serializable {
一对一: 一对一的关系极为一个数据仅对应一个数据,用下图的结构图可以帮助理解: 下面用代码实现一下,首先要创建工程项目如下: 接着,我们定义模型: 来到models.py文件,创建两
假设我有5列。 pd.DataFrame({ 'Column1': [1, 2, 3, 4, 5, 6, 7, 8, 9], 'Column2': [4, 3, 6, 8, 3, 4, 1, 4, 3
我是一名优秀的程序员,十分优秀!