2

我创建了一堆 Group Entities

for (NSString *groupID in result) {
    group = [Group MR_createInContext:context];

    group.groupID = [NSNumber numberWithInteger:[groupID integerValue]];
}

然后我想按排序列出它们:

NSArray *groups = [Group MR_findAllSortedBy:@"groupID" ascending:TRUE inContext:context];

for (Group *group in groups) {
    DLog(@"group.groupID: %@", group.groupID);
    DLog(@"group: %@", group);
}

这会产生错误:

-[__NSCFNumber caseInsensitiveCompare:]: unrecognized selector sent to instance 0x2595d2c0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber caseInsensitiveCompare:]: unrecognized selector sent to instance 0x2595d2c0'

我的组Entity是自动生成的:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@interface Group : NSManagedObject

@property (nonatomic, retain) NSNumber * groupID;

@end

@interface Group (CoreDataGeneratedAccessors)

@end

如果我在不使用 Magical Record 的情况下进行相同的提取,它就可以了:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Group"];

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"groupID" ascending:TRUE selector:nil];

NSArray *sorters = [NSArray arrayWithObject:sort];

[fetchRequest setSortDescriptors:sorters];
NSError *error = nil;

NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

任何想法为什么我会收到错误?

4

1 回答 1

1

所以我检查了 github ( https://github.com/magicalpanda/MagicalRecord ) 上的 Magical Record 存储库,但我没有看到您正在使用的方法(可能是因为bug文档中有一个关于获取排序方法的已排序的实体,但我看到了另外两种推荐用于获取已排序实体的方法。

[entity MR_findAllSortedByProperty:@"property" ascending:YES] // single property [entity MR_findAllSortedByProperty:@"oneProperty,secondProp" ascending:YES] // mutliple properties

于 2013-05-10T19:02:38.260 回答