Objective c 在prepareForSegue期间,当尝试为属性赋值时获取[UIViewController<;null selector>;]?

Objective c 在prepareForSegue期间,当尝试为属性赋值时获取[UIViewController<;null selector>;]?,objective-c,ios,exception,segue,Objective C,Ios,Exception,Segue,在prepareForSegue期间,我尝试为属性赋值并得到错误 2012-05-09 23:14:22.122泄漏检测程序[17709:15b03]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UIViewController setCoordLong:]:发送到实例0xa86e930的选择器无法识别' 标题: @property (nonatomic, retain) NSString *CoordLong; @property (no

在prepareForSegue期间,我尝试为属性赋值并得到错误

2012-05-09 23:14:22.122泄漏检测程序[17709:15b03]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UIViewController setCoordLong:]:发送到实例0xa86e930的选择器无法识别'

标题:

@property (nonatomic, retain) NSString *CoordLong;
@property (nonatomic, retain) NSString *CoordLat;
它们是合成的

-(void)prepareForSegue:(UIStoryboardSegue*)segue发送方:(id)发送方{

我错过了什么明显的东西吗


谢谢

看起来您还没有在故事板中的takePhotoViewController上设置view controller子类,因此它正在实例化一个不知道CoordLat是什么的基本UIViewController(如错误中所示)


顺便说一句,按照惯例,类名以大写字母开头,变量/属性以小写字母开头,您的情况似乎正好相反。

看起来您没有在故事板中的takePhotoViewController上设置视图控制器子类,因此它正在实例化基UIViewController(如错误中所示)不知道CoordLat是什么


顺便说一句,按照惯例,类名以大写字母开头,变量/属性以小写字母开头,而您似乎正好相反。

您可能需要强制转换viewController,因为默认情况下destinationViewController返回UIViewController

takePhotoViewController *takePhotoC = (takePhotoViewController *)[segue destinationViewController];

您可能需要强制转换viewController,因为默认情况下destinationViewController返回UIViewController

takePhotoViewController *takePhotoC = (takePhotoViewController *)[segue destinationViewController];

这将有助于编译警告,但问题是有关运行时错误的。destinationViewController返回目标的任何类,即UIViewController或子类。这将有助于编译警告,但问题是有关运行时错误。destinationViewController返回任何类目标是-将是UIViewController或子类。我意识到我正在尝试向上转换到takePhotoViewController,这就是为什么这些附加属性会导致运行时异常。我了解到这是通过segue与子视图“通信”的方式。但现在我想知道这是如何实现的可以实际完成。你的代码很好。我认为问题出在你的故事板上。找到te segue链接到的视图控制器。选择它,在identity inspector中,确保类设置为正确的子类。我意识到我正在尝试向上转换takePhotoViewController,这就是为什么这些附加属性e导致运行时异常。我了解到这是通过segue与子视图“通信”的方式。但现在我想知道如何实际做到这一点。您的代码很好。我认为问题出在您的故事板中。找到te segue链接到的视图控制器。选择它,并在identity inspector中确保该类被设置为正确的子类。