HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – NSSortDescriptor – 基于另一个数组对描述符进行排序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个核心数据应用程序.我想获取一种对象,用户.用户拥有属性userId.

我有一个带有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 request
NSArray *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 – 基于另一个数组对描述符进行排序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。