我有一个将值传递给parse对象的文本字段。它工作得很好,然后我在我的TableViewController中添加了一个Tab Bar Controller,它是PFQueryTableViewController的子类。现在,self.message.text;
或message.text
(已合成)都没有传递正确的值,而是传递了nil,我的应用程序崩溃了。
以下是我尝试运行的代码示例:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSString *echo = message.text;
PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
PFObject *echoObject = [PFObject objectWithClassName:@"Echo"];
echoObject[@"body"] = echo;
echoObject[@"title"] = @"Echo";
echoObject[@"user"] = currentUser;
[echoObject saveInBackground];
NSLog(echo);
NSLog(@"TEST");
} else {
// show the signup or login screen
}
[self loadObjects];
return YES;
}
添加TabBarController是我唯一能想到的会以破坏代码的方式影响视图控制器的东西。如果我想到可能破坏代码的任何其他内容,我会更新问题。
我已经验证导致异常的对象是echoObject[@"body"] = echo;
,因为值为nil。同样在NSLog中,消息不会打印到控制台。
更新
我设法通过直接从方法中提取TextField值来使代码工作,如下所示:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSString *echo = textField.text;
PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
PFObject *echoObject = [PFObject objectWithClassName:@"Echo"];
echoObject[@"body"] = echo;
echoObject[@"title"] = @"Echo";
echoObject[@"user"] = currentUser;
[echoObject saveInBackground];
NSLog(echo);
NSLog(@"TEST");
} else {
// show the signup or login screen
}
[self loadObjects];
return YES;
}
这就是代码应该首先出现的方式,但我想澄清为什么自指针和合成指针不起作用。