NSSortDiscriptor对正值进行sorting

在我的核心数据中,我要求按距离(NSNumber [double])按升序排列x个对象。 问题是它也给我回负数。 我知道这是有道理的,但我只想要正数,我该怎么办呢?

NSManagedObjectContext *context = generateManagedObjectContext(); NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:kCORE_DATA_ALL_TRAPS_ENTITY inManagedObjectContext:context]; [fetchRequest setEntity:entity]; // Specify how the fetched objects should be sorted NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:DISTANCE_TO_CLOSE_POINT ascending:YES]; [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]]; // Limit the restlus to specific number [fetchRequest setFetchLimit:numberOfTraps]; NSError *error = nil; NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; if (fetchedObjects == nil || fetchedObjects.count == 0) { NSLog(@"%s error: %@", __PRETTY_FUNCTION__, error.localizedDescription); return nil; } 

尝试这个,

  NSPredicate *predicate = [NSPredicate predicateWithFormat:@"distance >= %d", 0]; [fetchRequest setPredicate:predicate]; 

正如大多数评论中提到的,您只使用NSSortDescriptor,而您也可以使用NSPredicate来完成这项工作。

您可以在这里findApple Docs中的示例。 有一个专门使用这两个部分。