我正在尝试对UserWrapper对象进行排序。包装器对象包含对象User,User对象包含属性UserName(我想要排序)。
我们很容易对用户数组(source)进行排序,但添加的UserWrapper层让我感到困惑。求救!
这是我的代码,适用于简单的用户数组:
NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"UserName"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)] ;
NSArray *descriptors = [NSArray arrayWithObject:nameDescriptor];
NSMutableArray *contactsStartingWithKey = [nameIndexesDictionary objectForKey:aKey];
[contactsStartingWithKey sortUsingDescriptors:descriptors]; // Exception thrown here because UserName is not a property of UserWrapper, but of UserWrapper.User
答案 0 :(得分:1)
在您的情况下,排序描述符的键参数也可以通过键路径:
[[NSSortDescriptor alloc] initWithKey:@"User.UserName"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)] ;
答案 1 :(得分:1)
尽管NSSortDescriptor
的API和文档有点不一致,但"键"参数实际上是一个关键路径。因此,您只需指定@"User.UserName"
作为密钥,您的代码就可以运行。