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

时间:2016-01-04 17:46:53

标签: ios objective-c nsarray addressbook

我正在建立一个"邀请朋友"特征。 它已经在工作我只有一个问题,我正在努力解决。 我正在检索我的联系人列表,每次选择联系人时,我都会将它们添加到我正在呼叫的NSMutableArray" selectedUser"。

因此,此时NSMutableArray中的每个项目都是"字典"一些价值观是"字典"同样。尤其是"手机"密钥我尝试访问和检索值键。

我想要完成的只是检索"电话号码"在字符串中将它们存储在NSArray中,然后我可以将其传递给[messageController setRecipients:recipe];配方只是NSStrings电话号码的阵列。

到目前为止,这是我的代码,我得到的是一个NSArray,其中包含多个NSArray,每个数组只有一个字符串作为电话号码。

  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";

}

由于

2 个答案:

答案 0 :(得分:1)

如果我正确地理解了这一点,那就在你写的那一行

titles

您正在尝试使用索引“value”索引充满字典的NSArray,这没有意义。您应该循环遍历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); 数组。

以下是一些示例代码,可以执行我认为您想要的内容。

NSURL *soundFileURL = [[NSBundle mainBundle] URLForResource:@"abc" withExtension:@"m4a"];

player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = 1; 

[player play];

答案 1 :(得分:0)

这是我提出的解决方案。

首先运行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];
    }

}