应用程序崩溃与发送到实例的无法识别的选择器 - 可能的欺骗

时间:2015-02-27 21:41:44

标签: ios objective-c

我知道这个问题已被提出,但我看到的答案都没有帮助我。如果你认为我错过了一个可能有帮助的,请告诉我。我看到其他示例,其中视图控制器根本没有尝试设置的变量,但这不是我的情况。

我在segue期间收到此错误:

-[EditPropertyViewController setLawnNumber:]: unrecognized selector sent to instance 0x19a301e0

无论何时我在prepareForSegue内部阻止这个块:

if( [segue.identifier isEqual:@"editProperty"])
{
    EditPropertyViewController *destView = segue.destinationViewController;
    destView.lawnNumber = _lawnNumber;
    destView.latitude = _latitude;
    destView.longitude = _longitude;
    destView.address = _serviceAddressLabel.text;

}

我有#import" EditPropertyViewController.h"在我的.m文件的顶部。我有一个带有标识符" editProperty"的segue,它推送一个设置为EditPropertyViewController类型的视图控件。

这是EditPropertyViewController.h,显示我有我试图设置的变量:

#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>

@interface EditPropertyViewController : UIViewController
@property (nonatomic, strong) GMSMapView *mapView;
@property (nonatomic, strong) GMSCameraPosition *camera;
@property(strong, nonatomic) NSString *address;
@property (nonatomic) CLLocationDegrees latitude;
@property (nonatomic) CLLocationDegrees longitude;
@property (nonatomic) int lawnNumber;

@end

我使用相同的方法使用相同的变量类型以及在其他段落中不传递数据的方法,但是我不知道我在这里采取了哪些不同的方法来解决这个问题。我还没有在其他任何地方创建[customVC setVariable:]方法,但尚未遇到此问题。

感谢任何建议!

编辑 - 关注@David H的建议,我在尝试设置值之前添加了这两行:

NSLog(@"Actual class is %@", NSStringFromClass([destView class]));

assert( [destView class] == NSStringFromClass([destView class]));

导致以下输出:

    2015-02-27 16:56:27.623 LawnGuru[2730:460942] Actual class is EditPropertyViewController 
Assertion failed: ([destView class] == NSStringFromClass([destView class]))

从故事板复制/粘贴,这是我尝试过去的VC的类型:&#34; EditPropertyViewController&#34;这是我访问的.h文件:#import&#34; EditPropertyViewController.h&#34;

2 个答案:

答案 0 :(得分:1)

有时候,从我在其他问题中看到的情况来看,Xcode似乎有一个打嗝,解决问题的唯一方法是删除涉嫌违规的代码并重新添加。尝试删除lawnNumber属性,然后重新执行。

答案 1 :(得分:0)

几乎可以确定您的dest视图控制器不是您认为的那样。试试这个:

EditPropertyViewController *destView = segue.destinationViewController;
NSLog(@"Actual class is %@", NSStringFromClass([destView class]));

if ( [destView class] == [EditPropertyViewController class] )
    NSLog(@"Class is good, responds to selector=%d", [destView respondsToSelector:@selector(setLawnNumber:)] );
}