Objective c 使用核心数据的视图控制器索引的不同值数组

Objective c 使用核心数据的视图控制器索引的不同值数组,objective-c,iphone,core-data,dictionary,uiviewcontroller,Objective C,Iphone,Core Data,Dictionary,Uiviewcontroller,我试图创建一个索引,表示核心数据存储区中每个记录的第一个字母值,以便在表视图控制器中使用。我使用的是苹果文档中的一段代码。我只想生成一个数组或不同值的字典作为结果。我的存储区已经在每个记录对象中定义了该字符。问题: 1) 我在理解NSDictionaryResultType时遇到问题。从何处接收生成的dictionary对象,以便我可以将其键分配给视图控制器?代码似乎只返回一个数组 2) 如果包含包含NSDictionaryResultType的行,则不会得到任何返回 3) 我意识到我可以在一个

我试图创建一个索引,表示核心数据存储区中每个记录的第一个字母值,以便在表视图控制器中使用。我使用的是苹果文档中的一段代码。我只想生成一个数组或不同值的字典作为结果。我的存储区已经在每个记录对象中定义了该字符。问题:

1) 我在理解NSDictionaryResultType时遇到问题。从何处接收生成的dictionary对象,以便我可以将其键分配给视图控制器?代码似乎只返回一个数组

2) 如果包含包含NSDictionaryResultType的行,则不会得到任何返回

3) 我意识到我可以在一个循环中完成这项工作,但我希望这能奏效

谢谢

 NSEntityDescription *entity = [NSEntityDescription  entityForName:@"People" inManagedObjectContext:managedObjectContext];

 NSFetchRequest *request = [[NSFetchRequest alloc] init];
 [request setEntity:entity];

        [request setResultType:NSDictionaryResultType]; // This line causes no no results.

 [request setReturnsDistinctResults:YES];
 [request setPropertiesToFetch :[NSArray arrayWithObject:@"alphabetIndex"]];

 NSError *error;
 NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
  • fetch请求将返回字典对象数组(与托管对象数组相反)。字典将只包含在获取请求中指定的属性的键值对

  • 您确定它没有返回字典对象数组吗?你看到了什么错误

  • 更新

    您的代码与我在1中描述的完全一样。如果您没有看到这个结果,可能您的数据模型或数据与您描述的不一样(您确定为每个对象设置了“AlphaoIndex”吗?)

    从(字典的)对象数组中,只需执行以下操作即可获得所需的数组:

    NSArray *letters = [objects valueForKey:@"alphabetIndex"];
    
  • fetch请求将返回字典对象数组(与托管对象数组相反)。字典将只包含在获取请求中指定的属性的键值对

  • 您确定它没有返回字典对象数组吗?你看到了什么错误

  • 更新

    您的代码与我在1中描述的完全一样。如果您没有看到这个结果,可能您的数据模型或数据与您描述的不一样(您确定为每个对象设置了“AlphaoIndex”吗?)

    从(字典的)对象数组中,只需执行以下操作即可获得所需的数组:

    NSArray *letters = [objects valueForKey:@"alphabetIndex"];
    

    谢谢你,杰瑞。我想出来了。我对我的核心数据类和存储进行了更改。我删除了SQLite文件并重新编译。

    谢谢gerry3。我想出来了。我对我的核心数据类和存储进行了更改。我删除了SQLite文件并重新编译。

    如果我添加包含“setResultType:NSDictionaryResultType”的行,则在获取之后生成的数组*对象为零。如果我注释掉这行,我会得到63个对象,代表实体“People”的所有对象。有一个名为“字母索引”的属性,其中包含代表人名第一个字母的值a-z。为了简短起见,我想要一个表示唯一值的字典或数组。如果在场的人只有安斯顿、弗兰克斯、约翰逊和史密斯,我会创建一个值为“A、F、J、S”的数组。正如我在上面的更新中所示,创建该数组非常容易。如果我添加包含“setResultType:NSDictionaryResultType”的行,则在获取之后,生成的数组*对象为零。如果我注释掉这行,我会得到63个对象,代表实体“People”的所有对象。有一个名为“字母索引”的属性,其中包含代表人名第一个字母的值a-z。为了简短起见,我想要一个表示唯一值的字典或数组。如果在场的人只有安斯顿、弗兰克斯、约翰逊和史密斯,我会创建一个值为“A、F、J、S”的数组。正如我在上面的更新中所示,创建该阵列非常容易。