拥有这样的NSMutableArray结构是否正常

时间:2013-08-15 04:21:54

标签: ios nsmutablearray

使用NSMutableArray设置UITableViewCell时出现问题。

-[__NSCFArray isEqualToString:]: unrecognized selector sent to instance

并在那一行:

cellDetailed.favouriteLabel.text=[arrayofFavouriteNames objectAtIndex:indexPath.row];

当NSLogging NSMutableArray时,我有这个:

favourites: (
        (
        "User1"
    ),
        (
        User2
    )
)

NSMutableArray的结构是否像:

favourites: (
"a",
"b",
"c"
)

当添加一个值作为收藏夹时,我首先拥有旧的收藏夹:

arrayofFavouritesNames = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"favourites_names"]];

然后,将新值添加到NSMutableArray:

[arrayofFavouritesNames addObject:name];

然后设置更新的NSMutableArray:

[[NSUserDefaults standardUserDefaults] setObject:arrayofFavouritesTeamsNames forKey:@"favourites_names"];

我真的不知道为什么我在UITableViewCell中遇到了这个错误,但我猜它与NSMutableArray的结构有关。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您的调试输出显示了一组字符串数组。也就是说:

  • 您的顶级对象(arrayofFavouritesNames)是一个数组。
  • 顶级数组的每个元素都是一个数组。
  • 每个二级数组的每个元素都是一个字符串。

因此,您要将name设置为数组,而不是字符串。在将其添加到arrayofFavouritesNames之前将其设置为字符串。

如果您需要更多帮助,请修改问题以告诉我们您如何设置name

答案 1 :(得分:2)

要获得价值,您需要写

NSLog (@"%@", [[arrayofFavouritesNames objectAtIndexPath:0] objectAtIndexPath:0]);

如果从数组中获取所有值,则使用for loop 如此,

for(int i = 0 ; i < arrayofFavouritesNames.count ; i++)
{
  NSLog (@"%@", [[arrayofFavouritesNames objectAtIndexPath:i] objectAtIndexPath:i]);
}