Error: Could not find overload for 'title' that accepts the supplied arguments

Error: Could not find overload for 'title' that accepts the supplied arguments

目前我有一个名为 Folder 的 NSManaged 对象的子类,其中 属性 名为 item,类型为 NSSet。我有一个 return 和 NSMutableArray 的函数,我试图在 table 视图中显示数据(然后重新排列 table 中显示的顺序)。

class Folder: NSManagedObject {

@NSManaged var title: String
@NSManaged var date: NSDate
@NSManaged var item: NSSet

func itemMutableArray() -> NSMutableArray {
    return NSMutableArray(array: (item.allObjects as! [Checklist]).sorted{ [=10=].date.compare(.date) == NSComparisonResult.OrderedAscending } )
}

表视图控制器:

 var itemMutableArray: NSMutableArray!
 itemMutableArray = folder.itemMutableArray() 

 cell.textLabel?.text = itemMutableArray[indexPath.row].title //Error

不幸的是,这 return 在我的 table视图中使用此功能时出现错误。

Error could not find overload for 'title' that accepts the supplied arguments

最终我想要实现的是显示数据并移动单元格以更改 NSSet 的顺序。

 table.didMoveCellFromIndexPathToIndexPathBlock = {(fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) -> Void in

  let delegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
  let context: NSManagedObjectContext = delegate.managedObjectContext!

  context.deleteObject(self.itemArray[indexPath!.row] as NSManagedObject )  

  self.itemArray.exchangeObjectAtIndex(toIndexPath.row, withObjectAtIndex: fromIndexPath.row)

 }

PS:最初我有一个函数 return 对象数组,但我无法修改 NSSet 的顺序,因为它们没有排序。

func itemArray() -> [Item] {
    let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
    return item.sortedArrayUsingDescriptors([sortDescriptor]) as! [Item]
}

有人对我目前哪里出错有什么建议吗?

表达式 itemMutableArray[indexPath.row].title 的问题在于,因为您将 itemMutableArray 键入为 NSMutableArray,所以 itemMutableArray[indexPath.row] 是 AnyObject。因此,Swift没有理由相信这个东西有title属性。您需要将其转换为 does 具有 title 属性 的东西(尽管如果可能的话,完全避免使用 NSMutableArray 会更好,因为Swift 数组 可变的)。