0

私は Xcode 4.2.1 を使用していくつかの iOS コードに取り組んでおり、plist ファイルを解析してすべてを に配置するとNSDictionary、すべての<string>値が になりますが、NSStringすべての<real>,値は.<integer><true/>NSNumber

すべてのキーと値を抽出する方法はありますが、各値を一致するデータ型に配置しますか?

たとえば、次のようになります。

<string>Hi There</string>に値を入れるNSString

<real>1.23</real>に値を入れるfloat

<integer>4</integer>に値を入れるNSInteger

<true/>または<false/>または<boolean>1</boolean>値を BOOL に入れる

私は多くの投稿を読みましたが、これを行うのに役立つものは何も見つかりません. 値の周りのラッパー要素 (用語が間違っている可能性があります) が何であるかを判断する方法さえわかりません!

NSDictionaryこれは機能しませんNSStringNSNumber

NSArray/は各値のデータ型を個別に保持しますNSMutableArrayか、それともキーと値とともに格納するために 3 番目の項目 (値のデータ型) を追加する必要がありますか?

たぶん、私はすでに行われたことをやり直そうとしていますか?

編集:私がやろうとしていることの詳細は次のとおりです...

私がやりたいことは、XML ファイルから一連のキー/値を読み取り、それらのキーをゲーム内で変数として使用できるようにすることです (キーは変数名であり、変数はキーに関連付けられた値に設定されます)。変数は次のようなメソッドを介して取得されますmyVar = [getVar @"name_of_key"];

編集:これが現在XMLをNSDictionaryに入れている方法です...

    NSDictionary *dictServer = nil;
    CFPropertyListRef plist =  CFPropertyListCreateFromXMLData(kCFAllocatorDefault, (CFDataRef)someXMLdata, kCFPropertyListImmutable, NULL);
    if ([(id)plist isKindOfClass:[NSDictionary class]]) {
        dictServer = [(NSDictionary *)plist autorelease];
    }
4

1 に答える 1

1

NSArray と NSDictionary では、プリミティブ (int など) ではなく、オブジェクト (NSNumber など) を挿入する必要があります。元のデータ型が必要な理由はありますか?

更新: NSNumber には、プリミティブ値をラップするクラス メソッドがあります。

aFloat = [NSNumber numberWithFloat:floatVar];
aBool = [NSNumber numberWithBool:boolVar];

値を取得するには、次を使用できます

[aFloat floatValue]
[aBool boolValue]
于 2012-07-11T17:52:31.567 に答える