无法识别的选择器发送到实例

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”,则构建失败 展示你的整个班级!你在某个地方犯了小错误!

以上是关于无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章

快速代码崩溃:“发送到实例的无法识别的选择器”

Swift 3:将无法识别的选择器发送到手势识别器实例

无法识别的选择器发送到实例,UISlider swfit3

UITableViewController 无法识别的选择器发送到实例

无法识别的选择器发送到实例

[UICollectionViewCell imageView]:无法识别的选择器发送到实例