错误:找不到接受提供的参数的'title'的重载

时间:2015-07-06 23:52:43

标签: ios swift uitableview core-data nsmutablearray

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

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{ $0.date.compare($1.date) == NSComparisonResult.OrderedAscending } )
}

TableViewController:

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

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

不幸的是,这在使用此功能时会在我的tableview中返回错误。

  

错误找不到接受提供的参数

的'title'的重载

最终我想要实现的是显示数据并移动单元格来改变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:最初我有一个函数来返回对象的数组但是我无法修改NSSet的顺序,因为它们没有被命令。

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

有人对我目前出错的地方有任何建议吗?

1 个答案:

答案 0 :(得分:0)

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