MR_importFromObject 方法在 XCode 7.1 beta (Swiftui 2.0) 中不起作用

Posted

技术标签:

【中文标题】MR_importFromObject 方法在 XCode 7.1 beta (Swiftui 2.0) 中不起作用【英文标题】:MR_importFromObject method is not working in XCode7.1 beta (Swift 2.0) 【发布时间】:2015-09-11 03:03:48 【问题描述】:

我想使用 MR_ImportFromObject 方法从字典创建实体。 它在我将 Xcode 6 更新到 7 之前工作。 但是当我使用 Xcode7 时, ImportFromObject 方法不起作用。 每次调用该方法,不会调用 willImport Delegate 方法,应用程序崩溃。

但是 ImportFromArray 方法效果很好。

这是错误信息。我认为要点是“swift_bridgeNonVerbatimFromObjectiveC”和“值类型未桥接到 Objective-C”。

libswiftCore.dylib`swift_bridgeNonVerbatimFromObjectiveC: 0x1060d4d50 : pushq %rbp 0x1060d4d51 : movq %rsp, %rbp 0x1060d4d54 : pushq %r15 0x1060d4d56 : pushq %r14 0x1060d4d58 : pushq %r12 0x1060d4d5a : pushq %rbx 0x1060d4d5b : movq %rdx, %r14 0x1060d4d5e : movq %rsi, %rbx 0x1060d4d61 : movq %rdi, %r15 0x1060d4d64 : 泄漏 0x54a15(%rip), %rsi ; _TMpSs21_ObjectiveCBridgeable 0x1060d4d6b : movq %rbx, %rdi 0x1060d4d6e : callq 0x1060d4610 ; swift_conformsToProtocol 0x1060d4d73 : movq %rax, %r12 0x1060d4d76 : testq %r12, %r12 0x1060d4d79 : 0x1060d4dc9 ; 0x1060d4d7b : movq %rbx, %rdi 0x1060d4d7e : movq %rbx, %rsi 0x1060d4d81 : callq *0x8(%r12) 0x1060d4d86 : testb %al, %al 0x1060d4d88 : 0x1060d4e49 ; 0x1060d4d8e : movq %rbx, %rdi 0x1060d4d91 : movq %rbx, %rsi 0x1060d4d94 : callq *0x10(%r12) 0x1060d4d99 : movq %r15, %rdi 0x1060d4d9c : movq %rax, %rsi 0x1060d4d9f : callq 0x1060d2100 ; swift_dynamicCastUnknownClass 0x1060d4da4 : testq %rax, %rax 0x1060d4da7 : 0x1060d4e49 ; 0x1060d4dad : movq 0x20(%r12), %r8 0x1060d4db2 : movq %rax, %rdi 0x1060d4db5 : movq %r14, %rsi 0x1060d4db8 : movq %rbx, %rdx 0x1060d4dbb : movq %rbx, %rcx 0x1060d4dbe : popq %rbx 0x1060d4dbf : popq %r12 0x1060d4dc1 : popq %r14 0x1060d4dc3 : popq %r15 0x1060d4dc5 : popq %rbp 0x1060d4dc6 : jmpq *%r8 0x1060d4dc9 : movq (%rbx), %rcx 0x1060d4dcc : xorl %eax, %eax 0x1060d4dce : cmpq $0x80, %rcx 0x1060d4dd5 : cmovbeq %rcx, %rax 0x1060d4dd9 : cmpq $0xf, %rax 0x1060d4ddd : jne 0x1060d4df1 ; 0x1060d4ddf : testl $0x80ffffff, 0x10(%rbx) 0x1060d4de6 : jne 0x1060d4e49 ; 0x1060d4de8 : 泄漏 0x54959(%rip), %r12 ; Swift._BridgeableMetatype 的协议见证表:Swift 中的 Swift._ObjectiveCBridgeable 0x1060d4def : jmp 0x1060d4d7b ; 0x1060d4df1 : cmpq $0xd, %rax 0x1060d4df5 : jne 0x1060d4e49 ; 0x1060d4df7 : movq 0x8(%rbx), %rax 0x1060d4dfb : movq (%rax), %rcx 0x1060d4dfe : xorl %eax, %eax 0x1060d4e00 : cmpq $0x80, %rcx 0x1060d4e07 : cmovbeq %rcx, %rax 0x1060d4e0b : 泄漏 0x54936(%rip), %r12 ; Swift._BridgeableMetatype 的协议见证表:Swift 中的 Swift._ObjectiveCBridgeable 0x1060d4e12 : cmpq $0x3f, %rax 0x1060d4e16 : jg 0x1060d4e33 ; 0x1060d4e18 : cmpq $0xf, %rax 0x1060d4e1c : ja 0x1060d4d7b ; 0x1060d4e22 : movl $0xb706, %ecx 0x1060d4e27 : btq %rax, %rcx 0x1060d4e2b : 杰 0x1060d4d7b ; 0x1060d4e31 : jmp 0x1060d4e49 ; 0x1060d4e33 : 泄漏 -0x40(%rax), %rcx 0x1060d4e37 : cmpq $0x2, %rcx 0x1060d4e3b : jb 0x1060d4e49 ; 0x1060d4e3d : cmpq $0x80, %rax 0x1060d4e43 : jne 0x1060d4d7b ; 0x1060d4e49 : 泄漏 0x4467e(%rip), %rax ; “值类型未桥接到 Objective-C” 0x1060d4e50 : movq %rax, 0x86561(%rip) ; gCRAnnotations + 8 0x1060d4e57 : int3 -> 0x1060d4e58 : nopl (%rax,%rax)

【问题讨论】:

【参考方案1】:

我现在从

更改了 MagicalRecord MR_importFromObject 库
id value = [objectData MR_valueForAttribute:primaryAttribute];

if (primaryAttribute != nil)
 
      managedObject = [self MR_findFirstByAttribute:[primaryAttribute name] withValue:value inContext:context];
 

 if (primaryAttribute != nil)
 
   id value = [objectData MR_valueForAttribute:primaryAttribute];
            managedObject = [self MR_findFirstByAttribute:[primaryAttribute name] withValue:value inContext:context];
 

您可以将它放在 NSManagedObject 上的类别或扩展 (swift) 中并使用它,直到 MagicalRecord 修复此问题。这就是我要做的。这为我解决了这个崩溃问题。

【讨论】:

【参考方案2】:

尝试禁用快速编译器优化。我们遇到了与魔法记录无关的类似崩溃,通过更改该设置已修复。

【讨论】:

以上是关于MR_importFromObject 方法在 XCode 7.1 beta (Swiftui 2.0) 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

快速的 MR_importFromObject 的 EXC_BAD_ACCESS

`x!=x` 是测试 NaN 的可移植方法吗?

约束优化方法

是否可以在字符串split()方法中放置两个分隔符?

如何在play framework1.x中使用main方法运行java类

webUbuntu上安装nodejs 4.x 5.x版本方法