我有一系列项目,每个项目都有自己独特的描述。基本上,我想创建一个方法,它从数组中获取每个项目并返回一个描述性字符串,该字符串显示所述数组中每个项目的描述。
- (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:)
由于
答案 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 @", "