【问题标题】:How to resolve dynamicCastClassUnconditional breakpoint when calling existingObjectWithID调用existingObjectWithID时如何解决dynamicCastClassUnconditional断点
【发布时间】: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


    【解决方案1】:

    经过多次尝试,我终于找到了解决此问题的方法。我看到一个提示,应用名称需要放在数据模型定义映射中。以前我将类的名称命名为“MyModel”,但将其更改为“MyApp.MyModel”解决了这个问题(明确声明要为“MyModel”使用哪个类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      相关资源
      最近更新 更多