2011-01-11 5 views
0

J'ai travaillé à travers plusieurs tutoriels sur les vues d'utilisateur.Passer d'un NSMutableArray à un .plist

je mets, selon les instructions, toutes les informations en un « LISTOFITEMS » comme ci-dessous

listOfItems = [[NSMutableArray alloc] init]; 

NSArray *countriesToLiveInArray = [NSArray arrayWithObjects:@"Iceland", @"Greenland", @"Switzerland", @"Norway", @"New Zealand", @"Greece", @"Rome", @"Ireland", nil]; 
NSDictionary *countriesToLiveInDict = [NSDictionary dictionaryWithObject:countriesToLiveInArray forKey:@"Countries"]; 

NSArray *countriesLivedInArray = [NSArray arrayWithObjects:@"India", @"U.S.A", nil]; 
NSDictionary *countriesLivedInDict = [NSDictionary dictionaryWithObject:countriesLivedInArray forKey:@"Countries"]; 

[listOfItems addObject:countriesToLiveInDict]; 
[listOfItems addObject:countriesLivedInDict]; 

Cela crée une vue de tableau sectionné. Je voudrais savoir comment le changer en .plist au lieu de tout taper dans le RootViewController.m. Je voudrais toujours qu'il soit dans une tableview sectionnée.

Existe-t-il une méthode simple pour passer de NSMutableArray, NSArray et NSDictionary à un plist?

Répondre

0

Il y a une méthode simple pour cette writeToFile:atomically::

[listOfItems writeToFile:destinationPath atomically:YES]; 

Cela va créer automatiquement un fichier avec plist à l'intérieur.

0

ce tri dépend de ce que vous voulez dans un plist, et de ce que vous y mettez. Si les entrées et le contenu sont tous les types CFPropertyList (CFString, CFDate, CFData, CFDictionary, CFArray, CFNumber ...), il suffit de le créer avec quelque chose comme CFPropertyListCreateDeepCopy.

si vous avez des objets personnalisés non convertibles (par exemple, vos propres sous-classes NSObject), consultez les rubriques d'archivage de cacao.

+0

vous pouvez également utiliser NSPropertyListSerialization – justin

+0

Je voudrais exactement les mêmes valeurs dans un plist puis l'importer dans la fichier. Donc, pour produire le même résultat. –

+0

@Kurt Lane bien sûr, voir la documentation pour les types pris en charge CFPropertyList (c'est cette liste, plus CFBooleanRef - et tous ces types sont sans pont ponté). par conséquent, si vous placez un objet de collection dans le plist, chaque entrée de la collection doit également être l'un des types pris en charge. Si vous avez besoin d'archiver des représentations d'objets au-delà de cette liste, vous devrez prendre en charge l'archivage/désarchivage en utilisant uniquement ces types ou utiliser les fonctionnalités d'archivage de Foundation pour archiver des objets de types plus élaborés. tout dans votre exemple (tableau, dictionnaire, chaîne de caractères) est compatible avec (suite) – justin

0

Ceci est la fin de fonction simple entendre relization

Ceci est la fonction est mise à jour NSArray

- (void) WriteRecordToFile:(NSMutableDictionary*)countDict { 
    // Here to write to file 
    databasePathCallCount = @"plist path"; 
    NSMutableArray *countArray = [NSMutableArray arrayWithContentsOfFile:databasePathCallCount]; 
    if(countArray) 
     [countArray addObject:countDict]; 
    [countArray writeToFile:databasePathCallCount atomically:NO]; 
}