【问题标题】:Dynamic cast error in swiftswift中的动态转换错误
【发布时间】:2014-11-12 11:34:44
【问题描述】:

目前我正在尝试遍历包含NSManagedObjectNSArray。 当我尝试投射获取的对象时,它会给我一个错误。 这是代码

for var i = 0; i < self.displayedHistoryListContent.count ; i=i+1{
            var productObject: Product = self.displayedHistoryListContent.objectAtIndex(i) as Product
        }

产品是我的NSManagedObject

应用程序在我正在投射“作为产品”的那一行崩溃

谁能告诉我哪里出错了?

【问题讨论】:

  • 你遇到了哪种错误?
  • -1:这是你的第 12 个问题,你应该知道如何格式化你的问题。以这种方式阅读代码非常困难。而且您还没有发布错误消息。如果您为您的问题付出任何努力,我们为什么要回答它?
  • libswiftCore.dylib`swift_dynamicCastObjCClassUnconditional: 0x409678: push {r4, r7, lr} 0x40967a: mov r4, r0 0x40967c: mov r2, r1 0x40967e: add r7, sp, #0x4 0x4096r80: cmp 4, #0x0 0x409682: beq 0x40969e ; Swift_dynamiccastobjcclassunnOmditional + 38 0x409684:MOVW R0,#0x8b8c 0x409688:movt r0,#0x1 0x40968c:添加r0,pc 0x40968e:ldr r1,[r0] 0x409690:mov r0,r4objc_msgsend 0x409696:tst.w r0,#0xff 0x40969A:BNE 0x4096A0 ; swift_dynamicCastObjCClassUnconditional + 40

标签: ios core-data swift


【解决方案1】:

您确定数组中的对象实际上是 Product 类吗?在处理 NSManagedObject 时,很容易混淆并引用一个集合而不是对象本身。 您可能知道强制转换不是转换?

使用 println() 来查看 wat 类型的对象是否真的存在

【讨论】:

  • 嗨 Rien,是的,它确实包含 Product NSManagedObject,因为它在我的表视图 reloadData 中正确显示。
  • 废话不多说,但运行时不同意你的观点,你试过 println(object) 吗?
【解决方案2】:

看起来您的数组确实不只包含Products。尝试使用as? 而不是as 来确认这一点。当您期望 Product 时,您可以使用 NSLog 查看数组中的内容。

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多