有人可以帮我从这个plist中获取数据吗?我无法访问plist中三个对象的值。
我可以看到我的tableView中的所有国家/地区列表,但是当我点击一个单元格时,我看不到价格。 请帮忙 感谢
MY PLIST
<plist version="1.0">
<dict>
<key>Afghanistan 3</key>
<array>
<string>RC $1.65</string>
<string>CC $2.36</string>
<string>EC 0</string>
</array>
<key>Albania 1</key>
<array>
<string>RC FREE</string>
<string>CC $1.01</string>
</array>
<key>Algeria 2</key>
<array>
<string>RC $0.27</string>
<string>CC $0.85</string>
</array>
<key>Andorra 2</key>
<array>
<string>RC FREE</string>
<string>CC $0.93</string>
也是我在xcode 4.5中实现的代码。 cc是plist中第0项的调用率 rc是plist中第1项中的接收率 ec是plist中第2项的额外费率
我怎么能看到cc,rc和&amp;当我单击下一个视图控制器中的单元格时,每个标签中的ec? 我的代码
NSString *ratesFile = [[NSBundle mainBundle] pathForResource:@"rates" ofType:@"plist"];
rates = [[NSDictionary alloc]initWithContentsOfFile:ratesFile];
NSArray * dictionaryKeys = [rates allKeys];
name = [dictionaryKeys sortedArrayUsingSelector:@selector(compare:)];
cc = [rates objectForKey:@"Item 0"];
rc = [rates objectForKey:@"Item 1"];
ec = [rates objectForKey:@"Item 2"];
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [rates count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
NSString *countryName = [name objectAtIndex:indexPath.row];
cell.textLabel.text = countryName;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *ccRate = [cc objectAtIndex:indexPath.row];
if (!self.detailViewController) {
self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
}
self.detailViewController.detailItem = ccRate;
[self.navigationController pushViewController:self.detailViewController animated:YES];
}
提前谢谢
答案 0 :(得分:1)
您对cc,rc和ec的访问权限不正确。在 didSelectRowAtIndexPath:方法中,您需要获取与indexPath关联的键的数组。然后从那里得到数组值。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *countryName = [name objectAtIndex:indexPath.row];
NSArray *countryInfo = [rates objectForKey:countryName];
// the countryInfo array has the RC, CC, and EC values.
}
请注意'rate'没有带有'Item 0','Item 1'等键的对象。这些价格是一个数组。数组没有键入。
答案 1 :(得分:0)
执行此操作 - 数组是键(名称)的值
NSString *rc = [[rates objectForKey:name] objectAtIndex:0];
NSString *cc = [[rates objectForKey:name] objectAtIndex:1];