2017-04-04 2 views
-3

S'il vous plaît aidez-moi, je suis en train de convertir UITextField en NSDate. Où est l'erreur?sélecteur non reconnu envoyé à l'instance

.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]); 
} 

- [__ texte NSCFString]: sélecteur non reconnu envoyé à l'instance 0x61000002c620 *** en raison de l'application Mettre fin exception uncaught 'NSInvalidArgumentException', raison: '- [__ NSCFString text]: sélecteur non reconnu envoyé à l'instance 0x61000002c620'

+0

'finishDateField' n'est pas un IBOutlet, alors comment l'initialiser? –

+0

Je l'ai eu d'une autre classe; 'self.finishDateField = [Loader dateField];' Loader l'objet d'une autre classe – sLav9n

+0

si '[Loader dateField]' renvoyant une chaîne, alors ce qui précède est incorrect, veuillez utiliser '[currentlySelectedTextField setText: [Loader dateField]];' this ligne pour définir le texte. Cela peut supprimer vos erreurs de construction. – arunjos007

Répondre

1

Il est simple ... Vous avez oublié d'ajouter .text après self.finishDateField

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

Si je fais cela, j'ai "Build Fail" – sLav9n

+0

@ sLav9n Il ne devrait pas échouer vérifier si vous avez d'autres erreurs dans le projet ou peut-être essayer de nettoyer et de construire. –

+0

Peut-être avez-vous déclaré une autre propriété avec le même nom "finishDateField". Double vérifier cela. –

0

dateFormat dateFromString:self.finishDateField est le textfiled lui-même. Vous devez attribuer le contenu du champ:

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

Si je fais cela, j'ai "Build Fail" – sLav9n

+0

- [__ NSCFString text]: sélecteur non reconnu envoyé à l'instance 0x608000030700 – sLav9n

0

Vous passez votre textField au lieu de chaîne, votre code devrait être,

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

Et deuxième chose que votre chaîne que vous entrez dans votre champ de texte est au format dd MMMM yyyy car votre formateur de date est comme ça, sinon vous n'aurez pas de date!

+0

Oui, le "finishDateField" a la valeur "21 Jule 2015"; si je mets ".text", la construction échoue – sLav9n

+0

montre toute ta classe! vous faites une erreur mineure quelque part! – Lion

+0

Montré, et corrigé la question. – sLav9n