0

私は一連のアイテムを持っており、それぞれに独自の説明があります。基本的に、配列から各項目を取得し、その配列内の各項目の説明を示す単一の説明的な文字列を返すメソッドを作成したいと考えています。

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

基本的に、これは私がこれまでに持っているコード化されたロジックです。

次のように初期化された2つのアイテムがあるとします。

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];

私のインベントリ(上記のコード)で、次の結果が必要です:

@"shovel: a shovel.\ngem a gem."

誰にも提案や指針はありますか。簡単だと思います。最近 Obj を手に入れたばかりです - C :)

ありがとう

4

3 に答える 3

1

次のように Item クラスの説明メソッドをオーバーライドすることで、よりエレガントに行うことができます。

- (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 に答える