0

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

- (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 :)

谢谢

4

3 回答 3

1

您可以使用:

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

或尝试 NSMutableString:

NSMutableString *list = [[NSMutableString alloc] init];
[list appendFormat:@"%@: %@\n", [i firstId], [i name]];
于 2013-10-09T06:39:41.907 回答
1

您可以通过重写 Item 类的 description 方法来更优雅地做到这一点,如下所示:

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

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

NSString* itemsString = [itemList componentsJoinedByString:@"\n"];
于 2013-10-09T06:43:13.617 回答
0

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

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

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

TheArray componentsJoinedByString @", "
于 2013-10-09T08:24:49.487 回答