Я хотел бы отсортировать созданные пользователем контакты, в которых у контактов есть куча данных.В некоторых контактах могут быть заполнены все поля или атрибуты, например, lastName, firstName, company, phone, email, в то время как у других может быть только имя или просто электронная почта или просто компания.
Обычный способ использования дескрипторов NSSortявляется создание NSArray, где первые sortDescriptors в массиве имеют приоритет с связями, разорванными каждым последующим.Таким образом:
NSSortDescriptor *last =[[NSSortDescriptor alloc]initWithKey:@"lastname" ascending:YES];
NSSortDescriptor *first =[[NSSortDescriptor alloc]initWithKey:@"firstname" ascending:YES];
NSSortDescriptor *company =[[NSSortDescriptor alloc]initWithKey:@"company" ascending:YES];
NSSortDescriptor *email =[[NSSortDescriptor alloc]initWithKey:@"email" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObjects:last, first, company,email, nil]];
применительно к
Allen,Joe,microsoft,ja@microsoft.com|Allen,Zack,google,nil|Smith,Tom,Apple,nil
даст вам:
Allen, Joe
Allen, Zack
Smith, Tom
, что выглядит хорошо.
Однако, если ваши данныевыглядит так:
Allen,Joe,nil,ja@gmail.com|nil,Zack,nil,zack@msn.com|nil,nil,nil,raj@gmailcom|nil,nil,cloudflare,nil
Вышесказанное даст вам:
cloudflare
raj@gmail.com
Zack
Allen, Joe
, что беспорядок.
Во втором случае я хотел бы что-то, что делает большевозможно, смысл, если только электронная почта отсортирована по электронной почте, за которой следует только если компания отсортирована по компании, за которой следует фамилия, затем имя
raj@gmail.com
cloudflare
Allen, Joe
Zack
или даже любые поля, которые они ранжировали в порядке
Allen, Joe
cloudflare
raj@gmail.com
Zack
Есть ли способ сделать это?Как apple делает это со своими контактами?
Спасибо за любые предложения