0

plistファイルから配列をコピーしようとしましたが、この配列のキー値を失いました。これは私がplistのコンテンツをロードする方法です:

NSString *path = [[NSBundle mainBundle]pathForResource:@"Cars" ofType:@"plist"]; 
NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:path];

self.brand = [dict objectForKey:@"Chevrolet"];

新しい辞書ブランドには、シボレー車のみが含まれています(文字列の配列です)。新しい辞書は次のように宣言されます。

NSDictionary *brand;
@property (nonatomic, retain) NSDictionary *brand;

キー値Chevroletを維持したいのですが、その内容(文字列配列)しかありません。唯一の方法は、ループして新しい辞書コンテンツを作成する方法です???:

NSArray *objects = [NSArray arrayWithObjects:@"Camaro", @"Corvette", nil];
NSDictionary *brand =[NSDictionary dictionaryWithObject:objects forKey:@"Chevrolet"];

詳しくは:

NSDictionaryブランドの宣言(ヘッダーファイル内):

NSDictionary *brand;
@property (nonatomic, retain) NSDictionary *brand;

PLISTの内容:

<plist version="1.0">
<dict>
<key>Chevrolet</key>
<array>
<string>Camaro</string>
<string>Corvette</string>
</array>
<key>Ford</key>
<array>
<string>Mustang</string>
<string>Kuga</string>
<string>Ranger</string>
</array>
</dict>
</plist>

アイデア:テーブルビューで選択したアレイのみを読む(例では、シボレー)

しかし、単純な文で(brand = [dict objectForKey:@ "Chevrolet"];)ループなし。新しいNSDICTIONARYブランドで、キーバリューを備えたアレイを維持します。

現在、私はキーを紛失し、アレイをコピーできるのは私だけです。

4

1 に答える 1

0

として宣言したにもかかわらず、brandオブジェクトはNSArrayではなく であるように見えるため、「キー」はありません。しかし、辞書はあなたが望むもののようです: ブランドキーとモデルの配列との関連付けです。他の人が言ったように、plist ファイルを見ずに何が得られるかを正確に知ることは困難です。NSDictionaryNSDictionarydic

于 2012-07-24T11:17:19.807 に答える