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

问题描述:

请帮助我,我试图将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文本]:无法识别的选择发送到实例0x61000002c620 ***终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因:' - [__ NSCFString text]:无法识别的选择器发送到实例0x61000002c620'

+0

'finishDateField'不是IBOutlet,那你是如何初始化它的? –

+0

我从另一堂课获得了它; 'self.finishDateField = [Loader dateField];'装载机另一个类的对象 – sLav9n

+0

如果'[Loader dateField]'返回一个字符串,那么上面的不正确请使用'[currentlySelectedTextField setText:[Loader dateField]];'this行设置文本。它可能会删除您的构建错误。 – arunjos007

很简单...你忘self.finishDateField

self.endDate = [dateFormat dateFromString:self.finishDateField.text];//error here 
+0

如果我这样做,我有“构建失败” – sLav9n

+0

@ sLav9n它应该不会失败检查,如果您有项目中的任何其他错误或可能会尝试清理和构建。 –

+0

也许你已经声明了另一个同名“finishDateField”的属性。仔细检查一下。 –

dateFormat dateFromString:self.finishDateField后添加的.text是textfiled本身。你必须到现场的内容分配:

self.endDate = [dateFormat dateFromString:self.finishDateField.text] 
+0

如果我这样做,我有“构建失败” – sLav9n

+0

- [__ NSCFString文本]:无法识别的选择器发送到实例0x608000030700 – sLav9n

你是通过你的textField而不是字符串,你的代码应该是这样的,

self.endDate = [dateFormat dateFromString:self.finishDateField.text]; 

而第二件事你说你在文本框输入的字符串格式为dd MMMM yyyy格式,因为你的日期格式化程序是这样的,否则你不会得到日期!

+0

是的,“finishDateField”具有值“21 Jule 2015”;如果我把“.text”,构建失败 – sLav9n

+0

显示你的全班!你在某个地方犯了一个小错误! – Lion

+0

显示,并纠正了这个问题。 – sLav9n