使用远程Plist填充UITableView

时间:2012-06-27 12:04:26

标签: iphone objective-c uitableview plist

我在服务器上上传了一个plist。当我使用:

记录数组时
NSLog(@"My Array: %@", topModsArray);

显示:

    "New item 0",
    {
    curVersion = "1.2.5";
    description = "This mod enables you to install other mods, does not modify the gameplay itself, helps other mods to.";
    maker = Risugami;
    mcVersion = "1.2.5";
    name = ModLoader;
    rating = 5;
    requires = Nothing;
},
"New item 1",
    {
    curVersion = "3.3.8.153";
    description = "This mod is like ModLoader, it allows other mods to be installed and work properly. This adds more capability for developers when making their mods.";
    maker = SpaceToad;
    mcVersion = "1.2.5";
    name = "Minecraft Forge";
    rating = 5;
    requires = ModLoader;
},
"New item 2",
    {
    curVersion = "1.2.5";
    description = "This mod gives capability for clients to use certain mods and for servers to be modded.";
    maker = Flan;
    mcVersion = "1.2.5";
    name = ModLoaderMP;
    rating = 5;
    requires = ModLoader;
},
"New item 3",
    {
    curVersion = "3.6.2";
    description = "This mod adds much more mobs to minecraft, making the game more fun and enjoyable. (Be warned it adds much more hostile mobs, and in the water)";
    maker = DrZhark;
    mcVersion = "1.2.5";
    name = "Mo' Creatures";
    rating = 5;
    requires = "ModLoader, Minecraft Forge, GUI API and CustomMobSpawner";
},
"New item 4",
    {
    curVersion = "3.1.5";
    description = "This mod makes minecraft more realistic with pipes, quarrys, machines, and much more. If you want your minecraft to be more realistic, this is a must have mod.";
    maker = "SirSengir (Now Opensource)";
    mcVersion = "1.2.5";
    name = Buildcraft;
    rating = 5;
    requires = "ModLoader and Minecraft Forge";
}

我希望它显示的是什么,但是当我尝试将名称密钥添加到UITableView时:

cell.textLabel.text = [[topModsArray objectAtIndex:indexPath.row] objectForKey:@"name"];

我的应用程序崩溃了SIGABRT:

2012-06-27 12:54:37.765 MinePedia[72019:f803] -[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6c8bad0
2012-06-27 12:54:37.766 MinePedia[72019:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6c8bad0'
*** First throw call stack:
(0x13bd052 0x154ed0a 0x13beced 0x1323f00 0x1323ce2 0x3424 0xade0f 0xae589 0x99dfd 0xa8851 0x53301 0x13bee72 0x1d6792d 0x1d71827 0x1cf7fa7 0x1cf9ea6 0x1d8530c 0x25530 0x13919ce 0x1328670 0x12f44f6 0x12f3db4 0x12f3ccb 0x12a6879 0x12a693e 0x14a9b 0x2868 0x27c5)
terminate called throwing an exceptionsharedlibrary apply-load-rules all
Current language:  auto; currently objective-c
(gdb) 

请帮帮我

2 个答案:

答案 0 :(得分:1)

在你的.h中看到make一个数组并在视图中分配它确实加载并使用它来显示你的表,让你的数组像这样......

for(int i =0 ;i <topModsArray.count ; i++ ){
    id object = [topModsArray objectAtIndex:i];
if([object isKindOfClass:[NSMutableDictionary class]] || [object isKindOfClass:[NSDictionary class]]){
     NSMutableDictionary  *dict = (NSMutableDictionary *)object;
     [yourArray addObject:dict];
 }

现在返回的行数是yourArray.count和你的cellForRowAtIndexPath:

 NSMutableDictionary  *dict = [yourArray objectAtIndexPath:indexPath.row];
 cell.titleLabel.text = [dict objectForKey:@"name"];

使用这可能对您有所帮助

答案 1 :(得分:0)

您的数组由交替的字符串和词典组成。偏移零处的对象是“新项0”,它没有objectForKey:方法。您需要从数组中选择实际要显示的项目(...或使用indexPath.row * 2 + 1之类的内容对其进行索引。)