更简洁的方式来编写所有这些参数

时间:2013-08-21 14:51:43

标签: objective-c string nsuserdefaults

我有一堆需要写的已保存的nsuserdefault参数(确切地说是20辆车)。我想知道写这篇文章最好的方法是什么。我按顺序编号,因为我相信for循环是合适的(不太确定)。下面的代码代表了我想要做的事情的片段。

         NSString *emailBody=[NSString                            
         stringWithFormat:@"%@, %@, %@",[[NSUserDefaults        
         standardUserDefaults]stringForKey:@"Car1"],[[NSUserDefaults 
         standardUserDefaults]stringForKey:@"Car2"],[[NSUserDefaults 
         standardUserDefaults]stringForKey:@"Car3"]];

3 个答案:

答案 0 :(得分:2)

没有理由保存20个单独的项目。只需将它们放在一个数组中,然后使用setObject:forKey:存储数组。然后,您可以使用stringArrayForKey:(或arrayForKey:或甚至只是objectForKey:)将它们全部作为数组提取。

拥有数组后,创建以逗号分隔的列表非常简单:

NSString *emailBody = [array componentsJoinedByString:@", "];

如果你必须将它们存储为20项兼容性,我仍然会将它们从NSUserDefaults中拉出来并在实际使用之前将它们放入一个数组中。

答案 1 :(得分:0)

略微整洁:

NSMutableString *emailBody = [[NSMutableString alloc] init];
for (unsigned i = 1; i <= 20; i++) {
    if (i > 1)
        [emailBody appendString:@", "];
    [emailBody appendString:[[NSUserDefaults standardUserDefaults]
        stringForKey:[StringWithFormat:@"Car%d", i]]];
}

答案 2 :(得分:0)

只需使用for循环,就像这样。

NSMutableArray *a = [NSMutableArray array];
for (int i=1;i<21;i++)
{
    [a addObject:[NSString stringWithFormat:@"Car%d", i]];
}

然后将数组放入一个字符串中。