代码之家  ›  专栏  ›  技术社区  ›  Nate

对核心数据实体的nsset进行排序-Objective-c

  •  13
  • Nate  · 技术社区  · 15 年前

    我想对核心数据NSSet的数据进行排序(我知道我们只能使用数组,但让我解释一下…)。我有一个实体用户,他与实体配方中的许多人有关系。配方具有name和id属性。 我想得到这样的数据:

    NSArray *id = [[user.recipes valueForKey:@"identity"] allObjects];
    NSArray *name = [[user.recipes valueForKey:@"name"] allObjects];
    

    如果我在两个数组中都取索引1处的对象,它们对应于相同的配方。。。

    谢谢

    2 回复  |  直到 4 年前
        1
  •  40
  •   Barry Wark    15 年前

    您需要首先对食谱进行排序:

    NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
    
    NSArray *sortedRecipes = [[recipes allObjects] sortedArrayUsingDescriptors:sortDescriptors];
    

    然后可以从排序的配方数组中提取属性数组,结果将保持排序顺序:

    NSArray *sortedNames = [sortedRecipes valueForKey:@"name"];
    NSArray *sortedIdentities = [sortedRecipes valueForKey:@"identity"];
    
        2
  •  7
  •   Dave DeLong    15 年前

    如果希望它们的顺序相同,则需要在提取值之前对它们进行排序。例子:

    NSArray * sortedRecipes = [user.recipes sortedArrayUsingDescriptors:arrayOfSortDescriptors];
    NSArray * identities = [sortedRecipes valueForKey:@"identity"];
    NSArray * names = [sortedRecipes valueForKey:@"name"];
    

    我很抱歉。我刚意识到这是一个iPhone问题 NSSet 没有 sortedArrayUsingDescriptors:

    NSArray * recipes = [user.recipes allObjects];
    NSArray * sortedRecipes = [recipes sortedArrayUsingDescriptors:arrayOfSortDescriptors];
    ....