【发布时间】:2014-10-16 02:58:59
【问题描述】:
我正在使用 swift 和 Xcode 6 创建一个 iOS 应用程序。我有一组充当向导的视图。在第一个中,我创建了一个 NSManagedObject。然后我将它的 objectID 传递给下一个视图。在下一个视图中,我使用existingObjectWithID 查找对象。找到对象,但调试器在 EXC_BREAKPOINT 处停止。这是代码中的sn-ps和断点的堆栈。我该如何摆脱它?
let context: NSManagedObjectContext = appDel.managedObjectContext!
let en = NSEntityDescription.entityForName("MyDataModel", inManagedObjectContext: context)
var d = MyDataModel(entity: en!, insertIntoManagedObjectContext: context)
d.name = nameField.text
d.autoplay = true
context.save(nil)
self.mydataId = d.objectID
然后在下一个视图中,我使用以下代码获取对象(mydataId 从第一个视图控制器传递到第二个。
var error: NSError?
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext!
var d: MyDataModel = context.existingObjectWithID(mydataId, error: &error) as MyDataModel
if error != nil {
println(error)
}
这是调试屏幕中断时的样子。
libswiftCore.dylib`swift_dynamicCastClassUnconditional:
0x10fcdf7d0: pushq %rbp
0x10fcdf7d1: movq %rsp, %rbp
0x10fcdf7d4: testq %rdi, %rdi
0x10fcdf7d7: je 0x10fcdf80e ; swift_dynamicCastClassUnconditional + 62
0x10fcdf7d9: movabsq $-0x7fffffffffffffff, %rax
0x10fcdf7e3: testq %rax, %rdi
0x10fcdf7e6: jne 0x10fcdf80e ; swift_dynamicCastClassUnconditional + 62
0x10fcdf7e8: movq 0xae741(%rip), %rax ; swift::ISAMask
0x10fcdf7ef: andq (%rdi), %rax
0x10fcdf7f2: nopw %cs:(%rax,%rax)
0x10fcdf800: cmpq %rsi, %rax
0x10fcdf803: je 0x10fcdf81d ; swift_dynamicCastClassUnconditional + 77
0x10fcdf805: movq 0x8(%rax), %rax
0x10fcdf809: testq %rax, %rax
0x10fcdf80c: jne 0x10fcdf800 ; swift_dynamicCastClassUnconditional + 48
0x10fcdf80e: leaq 0x332fd(%rip), %rax ; "Swift dynamic cast failed"
0x10fcdf815: movq %rax, 0xae5cc(%rip) ; gCRAnnotations + 8
0x10fcdf81c: int3
0x10fcdf81d: movq %rdi, %rax
0x10fcdf820: popq %rbp
0x10fcdf821: retq
0x10fcdf822: nopw %cs:(%rax,%rax)
它停在最后一个“movq”行。我希望有人知道如何摆脱它。
【问题讨论】:
标签: ios core-data swift dynamic-cast