我有一个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"]];
它有效,但是将值放在方括号中。
这里似乎是什么问题?为什么第一次尝试不起作用?
最佳答案
_isNaturallyRTL
是一个未公开的NSString方法。看起来
[userdata objectForKey:@"firstname"]
是一个NSMutableArray(根据类名猜测),您试图将其用作字符串。当您将格式字符串与%@格式说明符一起使用时,它将调用要格式化/打印的对象的
-description
方法(NSLog也是如此),并且NSArray的描述是一个NSString,看起来像[ "description of first element", "description of second element" ]
等等,这就是为什么它将文本放在方括号中但不会崩溃。
总而言之,使用
[[userdata objectForKey:@"firstname"] objectAtIndex:0]
代替。
关于ios - UITextfield的NSDictionary元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11346422/