1

IOS プログラミングの基本をゆっくりと習得していましたが、小さなハードルにぶつかったようです

Webサーバーにある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">
<dict>
<key>Item 0</key>
<dict>
    <key>eventDate</key>
    <string>27-06-2012</string>
    <key>eventTitle</key>
    <string>Clinic</string>
</dict>
<key>Item 1</key>
<dict>
    <key>eventDate</key>
    <string>28-06-2012</string>
    <key>eventTitle</key>
    <string>Clinic</string>
</dict>
<key>Item 2</key>
<dict>
    <key>eventDate</key>
    <string>28-06-2012</string>
    <key>eventTitle</key>
    <string>Office Closed</string>
</dict>
<key>Item 3</key>
<dict>
    <key>eventDate</key>
    <string>29-06-2012</string>
    <key>eventTitle</key>
    <string>Tour</string>
</dict>
</dict>
</plist>

読み取りのパントロードを行った後、このコードをハックしてテーブルにデータを入力することができました。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
UITableViewCell * cell =[tableView dequeueReusableCellWithIdentifier:@"cell"];

if (nil == cell)
{
    cell = [[UITableViewCell alloc]
            initWithStyle:UITableViewCellStyleSubtitle
            reuseIdentifier:@"cell"];
}

NSString *currentEventName;
currentEventName = [eventKey_web objectAtIndex:indexPath.row];
[[cell textLabel] setText:currentEventName];

return cell;
}

...

- (void)viewDidLoad
{
[super viewDidLoad];

NSURL * myURL1;

myURL1 = [NSURL URLWithString:@"http://www.mywebsite.com/events.plist"];

event_web = [[NSDictionary alloc] initWithContentsOfURL:myURL1];
eventKey_web = [event_web allKeys];
}

現在、テーブルに値が入力されていますが、アイテム 0、アイテム 1、アイテム 2 のみが含まれています。

私の目標は、説明として eventTitle をテーブルに入力することです。

おそらくばかげた質問で申し訳ありませんが、それでもObjective Cについて頭を悩ませようとしています

4

2 に答える 2

0

eventKey_web = [event_web allKeys];plist からすべてのキーを取得するには、そのキーに値を追加する必要があります。

したがって、これを使用する代わりに:

currentEventName = [eventKey_web objectAtIndex:indexPath.row];

次のようなものを使用できます。

NSMutableDictionary *r = [[event_web objectAtIndex:indexPath.row] objectForKey:[eventKey_web objectAtIndex:indexPath.row] ];
event_web = [r objectForKey:@"eventTitle"]`
于 2012-06-25T11:08:03.230 に答える
0

関数のキーで NSDictionary を取得し、辞書から対応するデータを取得する必要があります。

NSString *currentEventName = [eventKey_web objectAtIndex:indexPath.row];  // This is only the key from your root dict
NSDictionary *currentEventDict = [event_web objectForKey:currentEventName];
NSString *currentEventDate = [currentEventDict objectForKey:@"eventDate"];
NSString *currentEventTitle = [currentEventDict objectForKey:@"eventTitle"];

//  Here do what you need to show
...
...
于 2012-06-25T11:08:17.277 に答える