目前,我有一个名为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]
}
有人对我目前出错的地方有任何建议吗?
答案 0 :(得分:0)
表达式itemMutableArray[indexPath.row].title
的问题在于,因为您键入了itemMutableArray
作为NSMutableArray,itemMutableArray[indexPath.row]
是一个AnyObject。因此,Swift没有理由相信这个东西有title
属性。你需要将它转换为 具有title
属性的东西(尽管如果可能的话,完全避免使用NSMutableArray要好得多,因为Swift数组是可变)。