Currently I have a subclass of NSManaged object called Folder
with property called item
that is of type NSSet
. I have a function to return a NSMutableArray
and I am trying to display the data in a tableview (and then rearrange the order displayed in the 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{ $0.date.compare($1.date) == NSComparisonResult.OrderedAscending } )
}
TableViewController:
var itemMutableArray: NSMutableArray!
itemMutableArray = folder.itemMutableArray()
cell.textLabel?.text = itemMutableArray[indexPath.row].title //Error
Unfortunately this returns an error in my tableview when using this function.
Error could not find overload for 'title' that accepts the supplied arguments
Ultimately what I am trying to achieve is to display the data and move the cells around to change the order of the 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: Originally I had a function to return an array of the object but I was unable to modify the order of the NSSet as they are not ordered.
func itemArray() -> [Item] {
let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
return item.sortedArrayUsingDescriptors([sortDescriptor]) as! [Item]
}
Does anybody have any suggestions with where I am currently going wrong ?