It works now the way I wanted it, with minor modifications of GeneralMike's code, so credits to him.
I post the working code with an explanation of the changes here.
NSSortDescriptor *sort [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
// Get just the letters
NSPredicate *predLetters = [NSPredicate predicateWithFormat:@"name MATCHES %@",@"^\\p{letter}.*"];
NSArray *tempLetters = [[list copy] sortedArrayUsingDescriptors:@[sort]];
tempLetters = [tempLetters filteredArrayUsingPredicate:predLetters];
// Get just the numbers
NSPredicate *predNumbers = [NSPredicate predicateWithFormat:@"NOT (name MATCHES %@)",@"^\\p{letter}.*"];
NSArray *tempNumbers = [[list copy] sortedArrayUsingDescriptors:@[sort]];
tempNumbers = [tempNumbers filteredArrayUsingPredicate:predNumbers];
// Combine arrays
NSMutableArray *tempCombined = [[NSMutableArray alloc] initWithArray:tempLetters];
[tempCombined addObjectsFromArray:tempNumbers];
// Rename to 'list'
list = [tempCombined copy];
Aparently you can't use < and > to compare strings from what I've found. But to check if it starts with an letter this regex works fine. For more information check out:
How can i filter NSMutableArray by firstName with non-alphabetical characters
The other changes have simply syntax reasons, but as GeneralMike said earlier, he hadn't the time to actually check it.
filteredArrayWithPredicate needs to be filteredArrayUsingPredicate
and
sortedArrayUsingDescriptors:sort needs to be sortedArrayUsingDescriptors:@[sort]
else you would get a cast-warning.
Can a moderator be as kind as to edit the working code plus explanation into his post so that he could get the credit for the answer and the upvotes?
Thank you