NSDictionary 元素到 UITextfield
Posted
技术标签:
【中文标题】NSDictionary 元素到 UITextfield【英文标题】:NSDictionary element to UITextfield 【发布时间】:2012-07-05 14:27:31 【问题描述】:我有一个NSDictionary
,其中包含一些我想在UITextField
中显示的参数。但是
firstname.text = [userdata objectForKey:@"firstname"];
抛出异常。如果我在[userdata objectForKey:@"firstname"];
上使用 NSLog,它会显示正确的值。
这是抛出的异常:
2012-07-05 15:55:56.533 项目[13642:f803] -[__NSArrayM _isNaturallyRTL]:无法识别的选择器发送到实例 0x68c4e20 2012-07-05 15:55:56.534 Project[13642:f803] *** 由于应用程序终止 未捕获的异常'NSInvalidArgumentException',原因:'-[__NSArrayM _isNaturallyRTL]: 无法识别的选择器发送到实例 0x68c4e20'
如果我使用
firstname.text = [NSString stringWithFormat:@"%@",[userdata objectForKey:@"firstname"]];
它可以工作,但它会将值放在括号中。 这里似乎有什么问题?为什么第一次尝试不起作用?
【问题讨论】:
您是否 100% 确定当您更改第一次尝试时,它会起作用?基本上,你确定错误就在那一行吗? 调试时会在该行抛出异常 【参考方案1】:_isNaturallyRTL
是一个未记录的 NSString 方法。看来
[userdata objectForKey:@"firstname"]
是一个 NSMutableArray (从类名猜测),您试图将其用作字符串。当您使用带有 %@ 格式说明符的格式字符串时,它会调用要格式化/打印的对象的 -description
方法(NSLog 也是如此),并且 NSArray 的描述是一个 NSString,看起来像
[ "description of first element", "description of second element" ]
等等,这就是为什么它将您的文本放在括号中但不会崩溃的原因。
总而言之,使用
[[userdata objectForKey:@"firstname"] objectAtIndex:0]
改为。
【讨论】:
就是这样,我确定该数组中只有 1 个元素,但我忘记调用该元素.... 非常感谢您【参考方案2】:firstname.text = [[userdata objectForKey:@"firstname"]stringValue];
这有什么不同吗?
【讨论】:
【参考方案3】:[userdata objectForKey:@"firstname"]
似乎正在返回一个仅包含您所追求的字符串的数组。看看你在哪里设置了“firstname”的值,然后把它改成你要的字符串。
【讨论】:
我通过 Json 从数据库中获取 NSDictionary,是的,它只包含 1 个字符串“firstname”以上是关于NSDictionary 元素到 UITextfield的主要内容,如果未能解决你的问题,请参考以下文章
NSDictionary 与 NSArray 正在转换为元素数组,同时使用 AfNetworking 2 将数据发布到 PHP