Iphone 带有比较器的NSSortDescriptor在获取与初始加载时更改行为

Iphone 带有比较器的NSSortDescriptor在获取与初始加载时更改行为,iphone,cocoa,ios4,core-data,nssortdescriptor,Iphone,Cocoa,Ios4,Core Data,Nssortdescriptor,我和一个NSSortDescriptor在一起的行为真的很奇怪。让我们从我的代码开始: NSSortDescriptor *nameExists = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES comparator:^(id obj1, id obj2){ if ( ([obj1 isEqualToString:@""] || [obj1 isKindOfClass:[NSNull class]] ||

我和一个NSSortDescriptor在一起的行为真的很奇怪。让我们从我的代码开始:

NSSortDescriptor *nameExists = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES comparator:^(id obj1, id obj2){
  if ( ([obj1 isEqualToString:@""] || [obj1 isKindOfClass:[NSNull class]] || obj1 == nil) && ![obj2 isEqualToString:@""]){
    return NSOrderedDescending;
  }
  else if ( ![obj1 isEqualToString:@""] && ([obj2 isEqualToString:@""] || [obj2 isKindOfClass:[NSNull class]] || obj2 == nil) ){
    return NSOrderedAscending;
  }
  return NSOrderedSame;
}];
这是一个排序描述符,我使用它按有名称字段和没有名称字段的用户对数据库中的用户进行排序。因此,如果你有一个20人的用户列表,其中5人没有名字,但15人有名字,那么有名字的15人会排在没有名字的15人之前。这与通常将字符串字段排序为升序的行为形成对比,它将在非空白字段之前显示空白字段的条目。

当我第一次加载视图时,这个分类描述符会返回到默认的行为——在整个字段之前有空白字段,好像我的比较器不在那里。

但是,如果我将新条目拉入核心数据,我的NSFetchedResultsController将根据我的比较器正确加载条目

我的直觉告诉我,我的积木的位置有问题。我在视图的init方法中有它。但是,我将其更改为loadView方法,并且该行为仍然存在

有人知道发生了什么事吗