0

我在服务器上上传了一个 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) 

请帮我

4

2 回答 2

1

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

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

使用这个可以帮助你

于 2012-06-27T12:13:52.930 回答
0

您的数组由交替的字符串和字典组成。偏移量为零的对象是“New item 0”,它没有objectForKey:方法。您需要从数组中选择您实际想要显示的项目(...或使用类似的东西对它们进行索引indexPath.row * 2 + 1)。

于 2012-06-27T12:10:02.527 回答