2015-07-16 3 views
-1

J'ai téléchargé un fichier plist du serveur, qui contient la paire valeur/clé. Une fois que l'application reprend/redémarre, je dois à nouveau télécharger le fichier et vérifier si le fichier a changé. Ci-dessous le code à télécharger ... Je stocke les valeurs clés dans NSDictionary.Comparer deux fichiers plist ou deux NSDictionary dans iOS

task1 = [session dataTaskWithURL:[NSURL URLWithString:[S3_SERVER_URL stringByAppendingString:propFile]] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
    propfilePath = [documentsDirectory stringByAppendingString:propFile]; 
    NSLog(@"DestPath : %@", propfilePath); 
    [receivedData appendData:data]; 
    NSLog(@"Succeeded! Received %lu bytes of data",(unsigned long)[data length]); 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
    [data writeToFile:propfilePath atomically:YES]; 

    if(error == nil){ 
     plistDictionary = [[NSDictionary dictionaryWithContentsOfFile:propfilePath] retain]; 
     [task2 resume]; 
    } else { 

    } 

}]; 

Comment puis-je comparer le contenu des deux fichiers plist ou du dictionnaire NS? Quelle est la fonction la mieux adaptée pour faire ce qui précède? Comme je dois le faire sur l'application créer/reprendre/redémarrer? Il devrait être compatible avec les SDK ios7 et ios8.

+0

Espoir cette question vous aidera à: http://stackoverflow.com/questions/17757111/compare-nsdictionaries-containing-nsstrings –

+0

tout autre moyen de comparer directement les fichiers plist ? – Anjali

Répondre

3

Si vous voulez toutes les clés changé suivent ceci: - Cela Retourne un tableau de toutes les clés modifiées.

Créer une catégorie pour NSDictionary

NSDictionary + newDict.h

#import <Foundation/Foundation.h> 

@interface NSDictionary (newDict) 
- (NSArray*)changedKeysIn:(NSDictionary*)d; 
@end 

NSDictionary + newDict.m

#import "NSDictionary+newDict.h" 

@implementation NSDictionary (newDict) 

- (NSArray*)changedKeysIn:(NSDictionary*)d { 
    NSMutableArray *changedKs = [NSMutableArray array]; 
    for(id k in self) { 
     if(![[self objectForKey:k] isEqual:[d objectForKey:k]]) 
      [changedKs addObject:k]; 
    } 
    return changedKs; 
} 
@end 

Vocation: -

#import "NSDictionary+newDict.h" 

et: -

NSArray *keys = [dict1 changedKeysIn:dict2]; 
NSLog(@"%@", keys);