6

私は2つの文字列を含む配列を持つplistを持っています画像を参照してください:

http://imageshack.us/photo/my-images/263/myplist.png/

そして私の中viewDidLoadにこれを追加します:

NSString *file = [[NSBundle  mainBundle] pathForResource:@"Data"    ofType:@"plist"];

NSArray *array = [NSArray    arrayWithContentsOfFile:file];

NSLog(@"array = %@", array);

しかし、私はいつもnullなぜですか?手伝ってくれてありがとう。

更新:解決策は、plistファイルを手動で編集する必要があることです(Xcode4はデフォルトでDictionnaryを使用します)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <array>
        <string>HO</string>
        <string>HI</string>
    </array>
</array>
</plist>
4

5 に答える 5

13

ほとんどの場合、plistは配列を含む辞書です(Xcode 4では、ルートオブジェクトとして配列を使用してplistを作成することはできません)。次のようなものを試してください。

NSString *file = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:file];
NSArray *array = [dict objectForKey:@"Array"];
NSLog(@"%@", array);
于 2011-06-02T04:50:15.867 に答える
0

plistこのタイプの:

ここに画像の説明を入力してください

または(基本的に両方とも同じです)

ここに画像の説明を入力してください

このように読むことができます:

NSString *file = [[NSBundle mainBundle] pathForResource:@"appFeatures" ofType:@"plist"];
_arrFeats = [NSArray arrayWithContentsOfFile:file];
NSLog(@"%i", _arrFeats.count);

appFeaturesの名前はどこにありますかplist。(iOS 6.1)

于 2013-03-12T12:54:21.273 に答える
0

plistはルートキーで始まる必要があります

アプリケーションでは、データ型にすることはできないため、ルートキー名を変更する必要があります

于 2011-06-02T04:58:08.653 に答える
0

私はこのトピックを研究し、plistファイルのいくつかの違いを発見しました。

たとえば、メソッドで読み取られるサンプルコードの元のplistファイルがあります
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];

xmlの元のファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"  
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<array>
<dict>
    <key>nameKey</key>
    <string>Number One</string>
    <key>imageKey</key>
    <string>small_one.png</string>
</dict>
<dict>
    <key>nameKey</key>
    <string>Number Two</string>
    <key>imageKey</key>
    <string>small_two.png</string>
</dict>

</array>        
</plist>

上記のXcodeインターフェイスで[新しいファイルプロパティリストの追加]を使用して同じファイルを作成しようとしたときに、同じ方法でアイテムを上記のファイルのインターフェイスに表示すると、メソッド[[NSArray alloc] initWithContentsOfFile:path];が失敗し、の構造に問題が見つかりました。 xmlplistファイル。XCodeインターフェイスを使用して作成されたファイルは、xmlplistファイルになります。

<plist version="1.0">
<dict>
<key>item 0</key>
<dict>
    <key>imageKey</key>
    <string>image1.jpg</string>
</dict>
<key>item 1</key>
<dict>
    <key>imageKey</key>
    <string>image2.jpg</string>
</dict>
</dict>
</plist>

最初の例と同じようにxmlファイルで直接変更を修正しましたが、メソッドは正常に機能します。

ポイントはplistファイルのXCodeインターフェースにあり、これらの違いはわかりません。どちらも同じように見えます。多分私のXcode4.1です

于 2011-11-11T14:53:10.150 に答える
0

正解は、ルートアイテムはすでに配列です(XCode4では..他のアイテムについてはわかりません)。したがって、neil dがスクリーンショットで示したように別の配列を配置すると、2つの文字列値を持つ配列を含む配列になります。

于 2012-02-29T03:51:42.803 に答える