2009-12-29 11 views
0

J'ai regardé la documentation du SDK et d'autres questions qui ont été posées, et je suis encore un peu confus sur la façon exacte de faire cela. Je travaillais précédemment avec le code suivant, bien qu'il ne donne pas le résultat souhaité d'un fichier .plist. En plus de mentionner l'IBAction dans les fichiers d'en-tête de ce code dans le fichier .m, y a-t-il autre chose à ajouter ou une autre méthode que je devrais prendre? Merci!SDK iPhone: Comment enregistrer correctement les informations entrées par l'utilisateur dans un fichier .plist ou un autre fichier?

Mon code:

- (IBAction)fedDog { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"dogsFedDays.plist"]; 
    NSMutableArray *dogsFedSave = [NSMutableArray arrayWithCapacity: 100]; 
    for (int i = 0; i < 100; i++) { 
     NSDictionary *myDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
                 date[i], @"string", 
                 fed[i], @"Yes", 
                 nil]; 
     [dogsFedSave addObject:myDict]; 
     [myDict release]; 
    } 
    if (![dogsFedSave writeToFile:path atomically:YES]) 
     NSLog(@"not successful in completing this task"); 
} 

Répondre

1

Je suppose que -writeToFile retourne NO si vous voyez votre déclaration NSLog (corrigez-moi si je me trompe). Si tel est le cas, le problème doit être que certains objets de votre tableau date ou alimenté ne sont pas des types d'objets autorisés pour les listes de propriétés qui incluent: NSString, NSData, NSArray ou NSDictionary. NSNulls ne sont pas autorisés. De la documentation pour writeToFile:

Cette méthode valide récursive qui tous les objets contenus sont la propriété objets de la liste avant d'écrire le fichier et retourne NON si tous les objets ne sont pas des objets de la liste des biens, depuis le fichier résultant ne serait pas une liste de propriétés valide.