WebサービスからのXML応答を解析するアプリケーションに取り組んでいます。このWebサービスは、オブジェクトスタッキングを使用して、さまざまな種類のオブジェクトのいくつかのインスタンスを返します。私は、これらのオブジェクトを取得して配列に取り込みたいだけです。今私は "objectStack.last"タイプに基づいて同様のコードのいくつかの異なる行を繰り返すスイッチを持っています。これは、XMLパーサのparserDidEndElement機能で、今のように見えるものです:Swift:配列名を指定するために変数を使用して配列を変更する
switch(objectStack.last){
case _ as apple:
apples.removeAll()
for apple in objectStack as! [apple]{
apples.append(apple.name.value)
objectType = "apple"
}
case _ as orage:
oranges.removeAll()
for orange in objectStack as! [orange]{
oranges.append(orange.name.value)
}
objectType = "orange"
case _ as bananas:
bananas.removeAll()
for banana in objectStack as! [banana]{
bananas.append(banana.name.value)
}
objectType = "banana"
case default:
break
問題は、Webサービスは、さまざまな種類の多数を返すことになる、と私はむしろスイッチを構築する必要がないだろうということですそれぞれのケース。この議論の目的のために、タイプ名(リンゴ、オレンジ、バナナなど)に "s"を追加するだけで、各タイプの空の配列を作成したとしましょう。変数を使って配列を操作する方法はありますか?このような何か:
objectStack.last + "s".removeAll()
for objectStack.last in objectStack.last + "s" as! [objectStack.last]{
objectStack.last + "s".append(objectStack.last.name.value)
objectType = objectStack.last
}
明らかに、この2番目のコードブロックが有効なコードではありません、私はちょうどそれは私が達成しようとしているものを説明するのに役立ちます願っています。
ご協力いただきありがとうございます。
辞書に入れておくのがもっとも明白な答えです。 –
@DavidBerryどのように見えますか? – GED125