在NSDictionary中将objectAtKey字符串设置为单独的类中的NSString

时间:2011-09-15 00:28:37

标签: iphone ios nsstring nsdictionary

我从URL(JSON)获取信息;我可以使用字典[aCategory objectAtKey:@"names"]中的文本轻松填充我的tableView以获取单元格标签。现在,根据单元格名称(类别),我想显示另一个表,该表将要求最后一个URL,以便根据该类别获取其余文本。

所以,我希望[aCategory objectAtKey:@"ID"]中的ID保存到字符串并放入下一个viewController的URL中。我目前正在尝试使用自动生成的set方法生成它,以在目标viewcontroller中填充NSString * ID;我打电话的时候 [newView setID: [aCategory objectAtKey:@"ID"]

我的新视图控制器的NSString ID表示它不是空的,但是当我尝试检查它是否确实是“1”或“2”时,我会得到像/p2002之类的东西。但是,在原始课程中,如果我说cell.detailLabelText.text = [aCategory objectAtKey:@"ID"];,标签会正确显示“1”“2”“3”..“14”等....

那么,我如何从该密钥获取该ID到我的另一个viewcontroller类?

我知道它是一个有效的NSCFString,因为我使用isClass和单元格detailLabelText对它进行了测试。

1 个答案:

答案 0 :(得分:0)

我需要更多细节来确定这一点,但需要注意几个......

NSString是所谓的类集群,它基本上意味着它实际上是底层框架之间切换的几个类不同类的集合......这意味着如果你使用

进行检查
isKindOfClass:

您可能无法获得您期望的结果。查看isKindOfClass的文档:在NSObject中。

但是,我不确定是否有任何可担心的问题。你看到'\ p2002'之类的东西(第一个字母可能是你吗?)可能只是字符串的当前底层表示。有时,当设备将字符串的内容保存在内存中时,它看起来不像“1”或“2”。这并不意味着存在问题:它只是意味着,在更深层次上,字符串在内存中的保存方式是不同的。这就是为什么你的标签可能会说“2”,但是当你在内存中检查它时,变量看起来不同。

(我猜测,因为你正在处理JSON,所以字符串是以一种名为UTF-8的形式编码的。)关键是,没有任何错误。

真正的问题是,您的新视图控制器是否正确加载?也许在你的新视图控制器的viewDidLoad:方法中,如果你运行这一行:

NSLog(@"%@", stringID);

这会将stringID的值打印到控制台。如果此数字与上一个视图控制器中表格单元格标签的编号相同,则应该已正确传递所有内容。