This is my method when I sort elements by position property. Both DBSet and DBItem have that property.
@objc(DBCategory)
class DBCategory: NSManagedObject {
@NSManaged var identifier: String
@NSManaged var items: Set<DBItem>
@NSManaged var sets: Set<DBSet>
}
And this is how I use it
private var elements = [AnyObject]()
private func prepareElements() {
elements.removeAll(keepCapacity: false)
if let items = currentCategory?.items {
for item in items {
elements.append(item)
}
}
if let sets = currentCategory?.sets {
for set in sets {
elements.append(set)
}
}
elements.sort {
var previousPosition = 0
var currentPosition = 0
if let set = $0 as? DBSet {
previousPosition = Int(set.position)
}
if let item = $0 as? DBItem {
previousPosition = Int(item.position)
}
if let set = $1 as? DBSet {
currentPosition = Int(set.position)
}
if let item = $1 as? DBItem {
currentPosition = Int(item.position)
}
return previousPosition < currentPosition
}
}
position is type of Int16
How can I simplify that?