2010-11-07 8 views
2

que je fais:iPhone plist et NSDate émet

NSString *path = [[self class] pathForDocumentWithName:@"Alarms.plist"]; 
NSArray *alarmDicts = [NSMutableArray arrayWithContentsOfFile:path]; 

if (alarmDicts == nil) 
{ 
    NSLog(@"MER. Unable to read plist file: %@", path); 
    path = [[NSBundle mainBundle] pathForResource:@"Alarms" 
               ofType:@"plist"]; 
    alarmDicts = [NSMutableArray arrayWithContentsOfFile:path]; 
} 

_displayedObjects = [[NSMutableArray alloc] 
         initWithCapacity:[alarmDicts count]]; 

for (NSDictionary *currDict in alarmDicts) 
{ 
    Alarm *alarm = [[Alarm alloc] initWithDictionary:currDict]; 
    [_displayedObjects addObject:alarm]; 
} 

pathForDocumentWithName juste une méthode d'aide, supposons que cela fonctionne (il fait). J'ajoute toutes les valeurs du plist à un objet, et je le stocke dans un tableau. Maintenant, si je fais quelque chose comme ceci:

NSUInteger index = [indexPath row]; 
id alarm = [[self displayedObjects] objectAtIndex:index]; 

NSString *title = [alarm title]; 
[[cell detailTextLabel] setText:title]; 

Cela fonctionne parfaitement bien. Mais en essayant de formater le type NSDate dans le fichier plist (répertorié comme « datetime »)

NSDate *datetime = [alarm datetime]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"hh:mm"]; 
[[cell textLabel] setText:[formatter stringFromDate:datetime]]; 

Il jette le NSLog pour alarmDicts étant nul, et renvoie nil pour la chaîne. Je n'ai plus d'idées et j'essaie depuis quelques heures de résoudre ce problème. Quelqu'un a des idées?

De plus, si j'imprimer la description datetime, il fonctionne parfaitement. Seulement nils et des erreurs quand je tente d'utiliser le NSDateFormatter sur elle.

Répondre

2

Une estimation massive, mais êtes-vous sûr que les dates dans votre liste de propriétés sont en cours de lecture en tant qu'objets NSDate? Si j'étais vous, je vérifierais le type de vos objets NSDate apparents, par ex.

NSLog(@"%@", [[alarm datetime] class]); 

Je serais suspecte qu'ils sont chargés comme NSStrings, qui NSDateFormatter diminuera au processus - mais ils semblent toujours se connecter correctement.

commentaire Aucun lien: Je suis sûr que c'est une erreur de copier et coller seulement, mais vous fuit les objets d'alarme « » au bas de votre premier extrait de code.

+0

Ouais c'est juste l'extrait. Et tu avais raison. Bien qu'il ait dit qu'il s'agissait d'un objet NSDate, j'ai recréé le fichier .plist et maintenant cela fonctionne. Merci pour la contribution! On dirait que j'ai besoin d'un nouvel ensemble d'yeux. – Pete