从数组向NSString添加多个值

时间:2013-10-09 06:32:48

标签: objective-c nsstring

我有一系列项目,每个项目都有自己独特的描述。基本上,我想创建一个方法,它从数组中获取每个项目并返回一个描述性字符串,该字符串显示所述数组中每个项目的描述。

- (NSString *) itemList
{
    NSString *list = [[NSString alloc] init];
    for (Item *i in _items)
    {
        /**
         Unsure :S
         */
        [NSString stringWithFormat:@"%@:         %@.\n", [i firstId], [i name]];
    }
    return list;
}

基本上,这是我到目前为止的编码逻辑。

假设我有两个初始化的项目:

Item *testItem1 = [[Item alloc] initWithIdentifiers:@[@"shovel", @"spade"] name:@"a shovel" andDesc:@"This is a mighty fine shovel"];
Item *testItem2 = [[Item alloc] initWithIdentifiers:@[@"gem", @"crystal"] name:@"a gem" andDesc:@"This is a shiny gem"];

然后我将这些项添加到Inventory对象中:

[testInventory put:testItem1];
[testInventory put:testItem2];

通过调用Inventory方法itemList

[testInventory itemList];

在我的库存(上面列出的代码)上,我想要以下结果:

@“铲子:铲子。\ ngem是一颗宝石。”

有没有人有任何建议或指示。我确信这很简单;只是我最近才拿起Obj - C:)

由于

3 个答案:

答案 0 :(得分:1)

你可以使用:

list = [list stringByAppendingFormat:@"%@: %@\n", [i firstId], [i name]];

或尝试NSMutableString:

NSMutableString *list = [[NSMutableString alloc] init];
[list appendFormat:@"%@: %@\n", [i firstId], [i name]];

答案 1 :(得分:1)

您可以通过覆盖Item类的描述方法来更优雅地执行此操作:

- (NSString *) description {
   return [NSString stringWithFormat:"%@: %@.", [self firstId], [self name]];
}

然后为数组中的所有项生成字符串:

NSString* itemsString = [itemList componentsJoinedByString:@"\n"];

答案 2 :(得分:0)

我喜欢将字符串集合添加到可变数组中,然后调用componentsJoinedByString。如果它是你想要的每个对象的描述方法,它的工作更加干净,因为你不必先进行收集循环。

Create nsmutablearray
For each item in list
  Nsmutablearray add object item.property
Return nsmutablearray componentsJoinedByString @", "

如果您想要项目的描述,您可以这样做,假设您有一个包含对象的数组

TheArray componentsJoinedByString @", "
相关问题