
我有另一个带有userIDs的数组,[1,4,3,5].我想创建一个NSSortDescriptor,它根据数组中userIDs的顺序对我的Userobjects进行排序.
这可能吗,我应该怎么做?
更新
我现在尝试了以下内容.
>我在我的User对象中添加了一个可转换的属性,在那里我存储了用户ID数组.
>我尝试了以下排序描述符:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"userID" ascending:YES comparator:^NSComparisonResult(ID obj1,ID obj2) { NSUInteger IDx1 = [self.user.followingIDs indexOfObject:[obj1 valueForKey:@"userID"]]; NSUInteger IDx2 = [self.user.followingIDs indexOfObject:[obj2 valueForKey:@"userID"]]; return IDx1 - IDx2;}]; 我收到以下错误:
SerIoUs application error. Exception was caught during Core Data change processing. This is usually a BUG within an observer of NSManagedobjectContextObjectsDIDChangeNotification. [<__NSCFNumber 0xa337400> valueForUndefinedKey:]: this class is not key value Coding-compliant for the key userID. with userInfo { NSTargetobjectUserInfoKey = 2502; NSUnkNownUserInfoKey = userID;}*** Terminating app due to uncaught exception 'NSUnkNownKeyException',reason: '[<__NSCFNumber 0xa337400> valueForUndefinedKey:]: this class is not key value Coding- compliant for the key userID.' 更新2
还想在User对象之间添加一个关系Followers.任何想法应该如何看待这种关系?见附图.那是对的吗?
解决方法 使用排序描述符无法完成此 *** 作,您必须在获取结果后应用自定义比较器函数:NSArray *userIDs = ...; // e.g. @[@1,@4,@3,@5]NSArray *results = ...; // result of fetch requestNSArray *sorted = [results sortedArrayUsingComparator:^NSComparisonResult(ID obj1,ID obj2) { NSUInteger IDx1 = [userIDs indexOfObject:[obj1 valueForKey:@"userID"]]; NSUInteger IDx2 = [userIDs indexOfObject:[obj2 valueForKey:@"userID"]]; return IDx1 - IDx2;}]; 总结 以上是内存溢出为你收集整理的ios – NSSortDescriptor – 基于另一个数组对描述符进行排序全部内容,希望文章能够帮你解决ios – NSSortDescriptor – 基于另一个数组对描述符进行排序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)