填充用的plist dictonary一个UITableView(Populating a UITa

2019-10-16 21:44发布

已经缓慢回升的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填充表作为描述。

对不起,我可能是愚蠢的问题,但还是想把我的头周围目标C

Answer 1:

你必须在你的功能键得到的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
...
...


Answer 2:

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"]`


文章来源: Populating a UITableView with plist dictonary