1

私は現在、plist ファイルを読み取ろうとしており、UITableView にデータを表示しようとしていますが、plist ファイルを読み取っているときに nil データを取得しています。

編集

plist ファイル構造:

<?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>
    <dict>
        <key>Title</key>
        <string>Mr</string>
        <key>First Name</key>
        <string>xxxxxx</string>
        <key>Last Name</key>
        <string>yyyyyyy</string>
        <key>Designation</key>
        <string>Senior Engineer</string>
    </dict>
</array>
</plist>

今すぐコードで

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

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];

NSArray *valueArray = [dict allKeys];

/*
Printing description of path:
/Users/rock/Library/Application Support/iPhone Simulator/6.0/Applications/2567D2B3-56D4-4464-9EFC-CAB923ABE955/PlistTableView.app/Data.plist
Printing description of dict:
<nil>
Printing description of valueArray:
<nil>
*/

辞書と配列の両方にデータが含まれていないのはなぜですか? テーブルビューでキーと値の両方を表示するにはどうすればよいですか?

4

3 に答える 3

2

plist ファイルには、配列内に辞書が含まれています。だからどちらかを使う

NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
NSDictionary *dict = [array objectAtIndex:0];

または、plist ファイルの構造を次のように変更します。

<plist version="1.0">
<dict>
    <key>Title</key>
    <string>Mr</string>
    <key>First Name</key>
    <string>xxxxxx</string>
    <key>Last Name</key>
    <string>yyyyyyy</string>
    <key>Designation</key>
    <string>Senior Engineer</string>
</dict>
</plist>
于 2013-01-01T18:59:15.970 に答える
1

上部には、<array>ではなくがあり<dict>ます。だからそれはこのようになるはずです...

NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
NSDictionary *dict=[array objectAtIndex:0];
NSArray *valueArray = [dict allKeys];
于 2013-01-01T19:00:59.140 に答える
-1

ファイルの先頭でこれを試してください:

<?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">
于 2013-01-01T18:52:32.253 に答える