2009-12-24 5 views
0

Si je souhaite que l'utilisateur puisse modifier les entrées d'une table avec des données numériques, (l'utilisateur cliquera sur une cellule de tableau, puis sur cette vue enfant, entrerait un nombre et retournerait à la vue de la table principale), je pensais que je voudrais simplement ajouter des entrées à un NSMutabaleArray. Si oui, lorsque l'utilisateur quitte l'application, ces valeurs sont-elles toujours présentes? Si c'est le cas, dois-je simplement avoir une méthode de table clear qui libère le tableau? Merci.NSArray, UITableView

Répondre

2

Les données de votre application ne sont pas conservées automatiquement.

Si vous avez une petite quantité de données, vous pouvez écrire une collection telle qu'un tableau dans un fichier Property List (plist) dans le répertoire Documents de votre application.

Si vous avez une grande quantité de données, je vous recommande d'utiliser des données de base.

0

Le moyen le plus rapide consiste à utiliser un NSKeyedArchiver pour écrire le NSArray dans un fichier. Vous devrez alors lire les données du fichier dans votre NSArray lorsque l'application sera lancée.

Voici un extrait:

Cela devient le chemin du document:

- (NSString*)pathForDataFile 
{ 
    //Get the path of the Documents directory 
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex: 0]; //Path to the documents directory 

    //Get the path to my file in /Documents 
    NSString* documentsPath = [documentsDirectory stringByAppendingPathComponent: 
           [NSString stringWithFormat: @"%@.plist", @"FileName"]]; 

    return documentsPath; 
} 

Ces sauveront et la charge:

- (BOOL)saveDataToDisk 
{ 
    NSString* path = [self pathForDataFile]; 

    NSMutableDictionary* rootObject = [NSMutableDictionary dictionary]; 

    if (self.yourArray) 
     [rootObject setValue: self.powerListCollection.items forKey: kYourKey]; 

    [NSKeyedArchiver archiveRootObject: rootObject toFile: path]; 

    return YES; 
} 

-

- (BOOL)loadDataFromDisk 
{ 
    NSString* path = [self pathForDataFile]; 
    NSFileManager* manager = [NSFileManager defaultManager]; 

    if ([manager fileExistsAtPath: path]) 
    { 
     NSLog(@"Saved data found, loading data from %@", path); 

     NSMutableDictionary* rootObject = nil; 
     rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile: path]; 

     NSArray* self.yourArray = [rootObject objectForKey: kYourKey]; 

    } 
    else 
    { 
     NSLog(@"No saved data, initializing objects with default values."); 
    } 

    return YES; 
} 

Notez que vous » ll faut retenir w vous revenez d'objectForKey: