2012-01-13 121 views
0

当我将UITextField中的文本内容发送到字典时出现此错误。但我看不出这个代码有什么问题:错误:'NSInvalidArgumentException',原因:' - [__ NSCFString text]:

NSMutableDictionary *newDrink = [[NSMutableDictionary alloc]init]; 
[newDrink setValue:self.nameTextField.text forKey:NAME_KEY]; // error here 

什么是可以的?

+0

是nameTextField一个UITextField还是它是一个NSString?看起来它不是UITextField。 – bandejapaisa 2012-01-13 15:29:52

回答

-3

我下注self.nameTextField为零。

检查。

此外,当试图从子类访问超类成员变量或属性时,请确保在超类中创建实例变量(在您的情况下,名为nameTextField),看看是否可以解决您的问题。 As this iPhoneSDK.com thread says“,这是一个非常具体的问题,当你在不创建实例变量的情况下综合一个属性时就会出现问题。”

+0

你可以调用Objective-C中nil对象的方法,你的应用程序不会崩溃 - 它会忽略这个调用。但是,如果你释放一个对象,然后尝试调用它的一个方法......那么它会崩溃与EXC_BAD_ACCESS! – bandejapaisa 2012-01-13 15:31:56

+0

你是对的,self.nameTextField是零。我继承了另一个UIViewController。在这个UIViewController中,我有IBOutlet的UITextField ...并且一切都很完美。但在这个小类中,没有。为什么?我没有这个控制器的XIB,我想用我的超类的同一个xib。当我继承时,我失去了IBOutlet和UITextField之间的联系? – holydev0tion 2012-01-13 15:49:22

+0

错误的答案。 Objective-C for beginners ...如果该方法返回一个对象,则发送给nil的消息返回0(nil)。请参阅http://developer.apple.com/library/ios/documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.html#//apple_ref/doc/uid/TP30001163-CH11-SW7 – 2012-01-13 15:50:08

0

我怀疑self.nameTextField已被释放,并且内存部分覆盖,所以它看起来像一个__NSCFString

检查nameTextField是否保留正确。

+0

我正在使用ARC。我不释放nameTextField。 – holydev0tion 2012-01-13 15:50:15

相关问题