NSSortDescriptorss make this really simple. With NSMutableArray you can sort the existing array using sortUsingDescriptors: and with immutable arrays you create a new array using sortedArrayUsingDescriptors:
//This will sort by stringProperty ascending, then dateProperty ascending
[mutable_array sortUsingDescriptors:
@[
[NSSortDescriptor sortDescriptorWithKey:@"stringProperty" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"dateProperty" ascending:YES]
]];