在NSMutableDictionary中使用相同的键保存多个值,然后将字典存储在NSMutableArray中

时间:2015-06-02 15:07:00

标签: ios nsmutablearray nsmutabledictionary

我知道这个问题已被多次询问但没有得到解决方案,或者我可能不明白这就是为什么发布问题。

for (int web=0; web<[web_arr count]; web++) {
    AdditionalBookmark *web_book=[[AdditionalBookmark alloc]init];

    UITextField *txtNam = (UITextField*)[self.view viewWithTag:1100+web];
    NSString *txtName = txtNam.text;
    UITextField *txtLin = (UITextField*)[self.view viewWithTag:1200+web];
    NSString *txtLink = txtLin.text;


       if ((txtName && txtName.length > 0)||(txtLink && txtLink.length > 0))
       {
        web_book.additionalBookmark_Name = txtName;
        web_book.additionalBookmark_Link= txtLink;
        web_book.contactDetails_Id=self.contactDetailsinfo.contactDetailsId;
        web_book.additionalBookmark_Id=[[[web_arr objectAtIndex:web] valueForKey:@"WeblinkId"] intValue];


        [dictWebLinks setObject:txtName forKey:@"WeblinkName"];
        [dictWebLinks setObject:txtLink forKey:@"WeblinkUrl"];

        [arrForWebLinks addObject:dictWebLinks];

    }
    [db updateIntoAdditionalBookmarkWithObject:web_book];
}
[dictUpdate setObject:arrForWebLinks forKey:@"Weblink"];

面临的问题是假设数组中有两个项目

Printing description of web_arr:
<__NSArrayM 0x170e4db60>(
{
WeblinkId = 9;
WeblinkName = Hdhd;
WeblinkUrl = "ie.comh";
},
{
WeblinkId = 10;
WeblinkName = Hd;
WeblinkUrl = "nd.com";
}
)

我得到的是:

Printing description of arrForWebLinks:
<__NSArrayM 0x170e4db30>(
{
WeblinkName = Hd;
WeblinkUrl = "nd.com";
},
{
WeblinkName = Hd;
WeblinkUrl = "nd.com";
}
)

字典正在替换仅包含最新值的相同键的值,如何管理以与web_arr中相同的格式保存值。 任何帮助都很明显。

1 个答案:

答案 0 :(得分:2)

您一遍又一遍地向数组中添加相同的字典:

[dictWebLinks setObject:txtName forKey:@"WeblinkName"];
[dictWebLinks setObject:txtLink forKey:@"WeblinkUrl"];

[arrForWebLinks addObject:dictWebLinks];

每次都需要创建一个新的:

[arrForWebLinks addObject:@{
    @"WeblinkName" : txtName,
    @"WeblinkUrl"  : txtLink
}];

(并删除dictWebLinks)。