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 数组 是 可变的)。
目前我有一个名为 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 数组 是 可变的)。