得到一个NSException错误。环顾四周,这可能是我如何调用的方法,但不能排除它,我是一个初学者,所以一个好的解释是非常感谢的。
这是我的AddListingViewController.h
#import <UIKit/UIKit.h>
#import "ListingTableViewController.h"
#import "ListingManager.h"
@interface AddListingViewController : UIViewController
@property (nonatomic) ListingTableViewController *manager;
@property (nonatomic) ListingManager *add;
@end这是我的AddListingViewController.m
#import "AddListingViewController.h"
@interface AddListingViewController ()
@property (weak, nonatomic) IBOutlet UITextField *title;
@property (weak, nonatomic) IBOutlet UITextView *desc;
@property (weak, nonatomic) IBOutlet UITextField *price;
@end
@implementation AddListingViewController
@synthesize manager = _manager;
@synthesize add = _add;
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.manager = [[ListingTableViewController alloc] init];
self.add = [[ListingManager alloc] init];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//cancel posting on tap
- (IBAction)cancelListing:(UIBarButtonItem *)sender {
NSLog(@"cancel tapped thpugh");
[self dismissViewControllerAnimated:YES completion:nil];
}
//add item on tap
- (IBAction)addListing:(UIBarButtonItem *)sender {
NSLog(@"Add button tapped");
self.add.listingTitle = self.title.text;
self.add.listingDescription = self.desc.text;
self.add.listingPrice = self.price.text;
[self.manager.listings addObject:self.add];
[self dismissViewControllerAnimated:YES completion:nil];
}
@end我得到的错误(我肯定上面写的很清楚,但我不知道如何排除)
2014-06-30 21:37:44.825 Wildcat Exchange[1981:180450] Add button tapped
2014-06-30 21:37:44.827 Wildcat Exchange[1981:180450] -[UITextInputTraits text]: unrecognized selector sent to instance 0xc193e90
2014-06-30 21:37:44.831 Wildcat Exchange[1981:180450] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITextInputTraits text]: unrecognized selector sent to instance 0xc193e90'发布于 2014-07-01 06:26:50
首先是例外。例外情况是NSInvalidArgumentException,这通常意味着您试图调用试图调用它的对象上不存在的函数或方法,也可能是将错误的参数传递给函数的情况。
例如,假设您编写了一个接受字符串并将其转换为整数的函数(让我们忽略NSString已经提供了这个事实)。如果有人传入一个不能被转换的字符串,比如传递字符串"hello world“,会发生什么?您的函数可能会决定它不能做任何事情,因此抛出一个InvalidArgmentException (在Cocoa世界中这种情况更少见,并且经常返回零,而不是抛出异常)。
然而,在这种情况下,它是前者,错误继续说"-UITextInputTraits文本:发送到实例0xc193e90的未识别的选择器“。“发送到实例的未识别选择器”部分只是确认了我们认为NSInvalidArgumentException的意思,您试图调用存储在内存地址0xc193e90中的某个对象的方法(或者称为选择器)。那个地址是什么类型的对象,您调用了什么方法?这就是-UITextInputTraits文本: part,这意味着您有一个UITextInputTraits类型的对象,并且尝试在它上调用'text‘方法。
下一步是找出坠机的地点。要做到这一点,您需要设置一个全局异常断点(虽然您的崩溃发生在您记录下一行的"Add按钮点击“之后),但我们不确定。我不会在这个问题上大发雷霆,这是在此之前的问题,也是苹果解释的。
一旦有了异常断点集,Xcode将在导致抛出异常的行上停止应用程序。此时,您可以使用一些调试器命令或查看周围的代码来找出更多内容。例如,如果它在addListing函数的第三行中断,那么了解类的类型可能会很有用,因此在lldb控制台提示下,您可以尝试
po self.title
or
po [self.title class]如果它不是UITextfield或UITextView,那么您可能在XIB文件的情节提要中有不正确的连接,在这种情况下,您应该检查接口生成器中的connections检查器。
祝好运
发布于 2014-07-01 03:02:42
当选择器的名称为text:(带有冒号)时,您似乎在调用文本。试着在末尾添加冒号,看看是否有效。
https://stackoverflow.com/questions/24501783
复制相似问题