2011-08-18 8 views
9

Otrzymuję dane z pliku XML i zapisuję je w obiekcie NSData. Chcę przekonwertować ten NSData do NSDictionary i przechowywać te dane w plist.Konwertowanie NSData na NSDictionary

Mój kod wygląda następująco:

NSURL *url = [NSURL URLWithString:@"http://www.fubar.com/sample.xml"]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    NSLog(@"%@", data); 

Aby przekonwertować dane używam:

- (NSDictionary *)downloadPlist:(NSString *)url { 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10]; 
    NSURLResponse *resp = nil; 
    NSError *err = nil; 
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&resp error:&err]; 

    if (!err) { 
     NSString *errorDescription = nil; 
     NSPropertyListFormat format; 
     NSDictionary *samplePlist = [NSPropertyListSerialization propertyListFromData:responseData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&errorDescription]; 

     if (!errorDescription) 
      return samplePlist; 

     [errorDescription release];    
    } 

    return nil; 
} 

Czy ktoś może mi powiedzieć jak to zrobić?

+0

Cóż, trzeba odczytać pliku XML i wyodrębnić elementy XML, które należą do słownika. Sposób wykonania zależy od struktury pliku XML. –

Odpowiedz

2

Spróbuj kod:

NSString *newStr1 = [[NSString alloc] initWithData:theData1 encoding:NSUTF8StringEncoding]; 
NSString *newStr2 = [[NSString alloc] initWithData:theData2 encoding:NSUTF8StringEncoding]; 
NSString *newStr3 = [[NSString alloc] initWithData:theData3 encoding:NSUTF8StringEncoding]; 

NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", nil]; 
NSArray *objects = [NSArray arrayWithObjects:newStr1 , newStr2 , newStr3 , nil]; 
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

for (id key in dictionary) { 
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]); 
} 

NSString *path = [[NSBundle mainBundle] pathForResource:@"Login" ofType:@"plist"]; 
[dictionary writeToFile:path atomically:YES]; 
//here Login is the plist name. 

Szczęśliwy kodowania

5

lub to:

NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
SBJSON *jsonParser = [SBJSON new]; 
NSDictionary* result = (NSDictionary*)[jsonParser objectWithString:dataStr error:nil]; 
[jsonParser release]; 
[dataStr release]; 
+0

Dzięki za to :) – Muzammil

+0

Działa to tylko dla danych JSON, a pytanie dotyczy danych XML. – Brian

+0

Co to jest SBJSON? –