如何检索存储在 NSArray 内的多个 NSArray 中的 NSString

How to retrieve NSStrings stored in multiple NSArrays inside of an NSArray

我正在构建 "invite friends" 功能。 它已经开始工作了,我只是遇到了一个问题。 我正在检索我的联系人列表,每次我 select 一个联系人时,我都会将它们添加到我正在调用的 NSMutableArray "selectedUser".

所以此时 NSMutableArray 中的每个项目都是 "Dictionaries",一些值也是 "Dictionaries"。特别是 "phones" 键,我正在尝试访问和检索值键。

我想要完成的是仅检索存储在 NSArray 中的字符串中的 "phone numbers",然后我可以将其传递给 [messageController setRecipients:recipents];食谱是仅包含 phone 个 NSString 的数组。

到目前为止,这是我的代码,我得到的是一个包含多个 NSArray 的 NSArray,每个数组只有一个字符串,即 phone 数字。

  NSArray *titles = [self.selectedUsers valueForKey:@"phones"];
  NSArray *value = [titles valueForKey:@"value"];
  NSLog(@"Output the value: %@", value);
  NSArray *recipents = value;

这是我在日志中得到的

2016-01-04 12:27:59.721 InviteFriends[4038:1249174] (
        (
        "(305) 731-7353"
    ),
        (
        "(786) 306-2831"
    ),
        (
        "(305) 333-3297"
    )
)

这是字典本身的日志

    {
    birthday = "";
    company = "";
    createdAt = "2015-09-06 16:14:18 +0000";
    department = "";
    emails =         (
    );
    firstName = "Lola";
    firstNamePhonetic = "";
    id = 699;
    jobTitle = "";
    lastName = "";
    lastNamePhonetic = "";
    middleName = "";
    nickName = "";
    note = "";
    phones =         (
                    {
            label = Home;
            value = "(305) 503-3957";
        }
    );
    prefix = "";
    suffix = "";
    updatedAt = "2015-09-23 23:31:25 +0000";

}

)

谢谢

如果我理解正确,在你写

的那一行

NSArray *value = [titles valueForKey:@"value"];

您正在尝试使用索引 "value" 为充满字典的 NSArray 编制索引,这没有意义。您应该改为遍历 titles 数组,从每个字典元素中提取 value,然后将该元素附加到 recipents 数组。

下面是一些示例代码,可以满足您的要求。

NSArray *titles = [self.selectedUsers valueForKey:@"phones"];

NSMutableArray *recipients = [[NSMutableArray alloc] init];
for (NSDictionary* dict in titles) {
    NSString* value = [dict objectForKey:@"value"];
    [recipients addObject:value];
}
NSLog(@"Phone Numbers: %@",recipients);

这是我想出的解决方案。

首先 运行 一个 for 循环来获取第一个键。然后嵌套另一个for循环来获取第二个键。

 NSArray *values = self.selectedUsers;
 NSMutableArray *recipients = [[NSMutableArray alloc] init];


 NSArray *values = self.selectedUsers;
 NSMutableArray *recipients = [[NSMutableArray alloc] init];


for (NSDictionary* dict in values) {

    // Grabs phones key
     NSDictionary *titles = [dict objectForKey:@"phones"];

    for (NSDictionary* dict2 in titles) {

     // Grabs the "value" key
     NSString* value = [dict2 objectForKey:@"value"];
        [recipients addObject:value];
    }

}