Ios Swift动态强制转换异常

Ios Swift动态强制转换异常,ios,uitableview,swift,Ios,Uitableview,Swift,有人知道我为什么会在这个代码块出现异常吗: override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell = tableView.dequeueReusableCellWithIdentifier("ListCell", forIndexPath: indexPath) as ListTableVi

有人知道我为什么会在这个代码块出现异常吗:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("ListCell", forIndexPath: indexPath) as ListTableViewCell
    let item = fetchedResultController.objectAtIndexPath(indexPath) as List
    cell.list_name?.text = item.list_name
    return cell
}
这是我要铸造的自定义类:

   import UIKit
   import CoreData

  class List: NSManagedObject {
      @NSManaged var list_name: String
      @NSManaged var items: NSSet
  }
此行出现异常:

    let item = fetchedResultController.objectAtIndexPath(indexPath) as List
class List: NSManagedObject ...
例外情况如下:

`libswiftCore.dylib`swift_dynamicCastClassUnconditional:
0x10d630860:  pushq  %rbp
0x10d630861:  movq   %rsp, %rbp
0x10d630864:  testq  %rdi, %rdi
0x10d630867:  je     0x10d63089e               ; swift_dynamicCastClassUnconditional + 62
0x10d630869:  movabsq $-0x7fffffffffffffff, %rax
0x10d630873:  testq  %rax, %rdi
0x10d630876:  jne    0x10d63089e               ; swift_dynamicCastClassUnconditional + 62
0x10d630878:  leaq   0xb52e9(%rip), %rax
0x10d63087f:  movq   (%rax), %rax
0x10d630882:  andq   (%rdi), %rax
0x10d630885:  nopw   %cs:(%rax,%rax)
0x10d630890:  cmpq   %rsi, %rax
0x10d630893:  je     0x10d6308ad               ; swift_dynamicCastClassUnconditional + 77
0x10d630895:  movq   0x8(%rax), %rax
0x10d630899:  testq  %rax, %rax
0x10d63089c:  jne    0x10d630890               ; swift_dynamicCastClassUnconditional + 48
0x10d63089e:  leaq   0x36b7d(%rip), %rax       ; "Swift dynamic cast failed"
0x10d6308a5:  movq   %rax, 0xb4c0c(%rip)       ; gCRAnnotations + 8
0x10d6308ac:  int3   
0x10d6308ad:  movq   %rdi, %rax
0x10d6308b0:  popq   %rbp
0x10d6308b1:  retq   
0x10d6308b2:  nopw   %cs:(%rax,%rax)`

我想你必须补充一点

@objc(List)
在这条线上:

    let item = fetchedResultController.objectAtIndexPath(indexPath) as List
class List: NSManagedObject ...

这就是本文中发布的解决方案。

objectAtIndexPath(\ux)
返回的对象不是
列表

如果不能保证是
列表
,则应始终使用条件强制转换,如下所示:

if let item = fetchedResultController.objectAtIndexPath(indexPath) as? List {
    // item is a List
    cell.list_name?.text = item.list_name
} else {
    // item isn't a List
    // See what it is if you're not expecting this
}

例外情况是什么?发生在哪里?@Carcigenicate-你说的“哪里”是什么意思?@Dario-我已经在帖子中添加了例外情况。这有帮助吗?@J0NNYZER0哪一行导致异常?整个程序不会抛出异常;它发生在某一行上。我的列表是一个自定义类。objectAtIndexPath(\)可以是任何对象。这不应该允许它处理我的列表吗现在我在控制台中遇到这个异常:2015-03-21 18:42:50.518 MyList[29808:1235523]CoreData:警告:无法为实体“List”加载名为“MyList.List”的类。找不到类,改为使用默认的NSManagedObject。所以我不知道为什么,但大多数教程都指示我在实体编辑器的“类”字段中的“类”前面加上一个点,但当我删除该应用程序名并将其放在“实体编辑器”的“类”字段中时,效果很好。@J0NNYZER0您的核心数据问题很好,但很简单和你问的不一样。如果您搜索堆栈溢出但没有找到答案,请随时发布新问题。