无法识别的选择器发送到实例
Posted
技术标签:
【中文标题】无法识别的选择器发送到实例【英文标题】:unrecognized selector sent to instance 【发布时间】:2017-04-04 09:03:53 【问题描述】:请帮助我,我正在尝试将 UITextField 转换为 NSDate。哪里错了?
.h
@property (weak, nonatomic) UITextField *finishDateField;
@property (strong,nonatomic) NSDate *endDate;
.m
-(void) getDate
SaveAndLoadClass* Loader = [[SaveAndLoadClass alloc] init];
[Loader loadSettings];
self.finishDateField = [Loader dateField];
[self firstCalculate];
-(void)firstCalculate
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd MMMM yyyy"];
self.endDate = [dateFormat dateFromString: self.finishDateField.text];
NSLog(@"datefromField:%@",[dateFormat stringFromDate: self.endDate]);
-[__NSCFString text]: 0x61000002c620 *** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'-[__NSCFString text]: unrecognized selector sent to instance 0x61000002c620'
【问题讨论】:
finishDateField
不是 IBOutlet,那么你是如何初始化它的呢?
我从另一个班级得到的; self.finishDateField = [Loader dateField];
Loader另一个类的对象
如果[Loader dateField]
返回一个字符串,那么上面的不正确请使用[currentlySelectedTextField setText:[Loader dateField]];
这一行来设置文本。它可能会消除您的构建错误。
所以[Loader dateField];
返回一个 UITextField ?
How can I debug 'unrecognized selector sent to instance' error的可能重复
【参考方案1】:
很简单……你忘了在self.finishDateField后面加上.text
self.endDate = [dateFormat dateFromString:self.finishDateField.text];//error here
【讨论】:
如果我这样做,我有“构建失败” @sLav9n 如果您在项目中有任何其他错误,或者可以尝试清理并构建,它应该不会失败。 可能是您声明了另一个具有相同名称“finishDateField”的属性。仔细检查。 不,我在这门课上只有一个“finishDateField” @sLav9n 你能分享 .h 和 .m 文件吗?【参考方案2】:dateFormat dateFromString:self.finishDateField
是文本文件本身。您必须分配字段的内容:
self.endDate = [dateFormat dateFromString:self.finishDateField.text]
【讨论】:
如果我这样做,我有“构建失败” -[__NSCFString text]:无法识别的选择器发送到实例 0x608000030700【参考方案3】:您传递的是 textField
而不是字符串,您的代码应该是这样的,
self.endDate = [dateFormat dateFromString:self.finishDateField.text];
您在文本字段中输入的第二件事是dd MMMM yyyy
格式,因为您的日期格式化程序是这样的,否则您将无法获得日期!
【讨论】:
是的,“finishDateField”的值为“2015 年 7 月 21 日”;如果我输入“.text”,则构建失败 展示你的整个班级!你在某个地方犯了小错误!以上是关于无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章