Загрузить список с URL и проанализировать его в NSMutableDictionary? - PullRequest
0 голосов
/ 12 ноября 2010

Привет, ребята ~

вот как я могу скачать лист с URL

NSURLRequest *theRequest=[NSURLRequest requestWithURL:setDefaultPwdAndSnURL                                              cachePolicy:NSURLRequestUseProtocolCachePolicy
                         timeoutInterval:60.0];
NSData    *returnData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:nil error:nil];
NSString *listFile = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

[listFile dataUsingEncoding:NSUTF8StringEncoding];
NSArray *plistData = [listFile propertyList];

и вот результат, который я получил

plistdata is(
        {
        sn = 1;
        pwd = 123;
    }
)

Я хочу сохранить его в NSMutableDictionary

NSArray *paths      = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *docPath    = [paths objectAtIndex:0];
 NSString *filePath   = [docPath stringByAppendingPathComponent:@"DevicePassword.plist"];
 NSMutableDictionary *dictread  = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

 NSMutableDictionary *device_serialnumber = [NSMutableDictionary dictionaryWithObject:[[plistData objectAtIndex:0]valueForKey:@"sn"]
                      forKey:@"serial_number"];

 NSMutableDictionary *device_password = [NSMutableDictionary dictionaryWithObject:[[plistData objectAtIndex:0]  valueForKey:@"pwd"]
                   forKey:@"password"];
 [dictread addEntriesFromDictionary:device_serialnumber];
 [dictread addEntriesFromDictionary:device_password];               
 [dictread writeToFile:filePath atomically:YES];

но я Log(@"dictread is :%@",dictread);

получил диктовку: (NULL)

....... ТАК ЧТО Я РАЗБИРАЮ НУЛЕЙ, ЧТОБЫ ДИКТРИРОВАТЬ ????

Пожалуйста, помогите мне разобраться с этой проблемой .... @ _ @

Большое спасибо ~

Примечание:

Я изменяю некоторое значение инициализации и регистрирую его, чтобы проверить

NSMutableDictionary *device_serialnumber = [NSMutableDictionary dictionaryWithObject:@"123"
                      forKey:@"serial_number"];

 NSMutableDictionary *device_password = [NSMutableDictionary dictionaryWithObject:@"456"
                   forKey:@"password"];

У меня есть два словаря "device_serialnumber" и "device_password"

Но "диктовать" по-прежнему (NULL)

Я дал неправильную функцию, чтобы добавить объект к нему ????

Ответы [ 2 ]

2 голосов
/ 12 ноября 2010

dictread не следует инициализировать с помощью initWithContentsOfFile: поскольку файл еще не существует.Это вернет nil для dictread, если файл имеет ошибку (не может прочитать его как словарь) или файл не существует.Попробуйте вместо этого использовать этот инициализатор.

NSMutableDictionary *dictread  = [[NSMutableDictionary alloc] initWithCapacity:[plistdata count]];
1 голос
/ 12 ноября 2010

Вы также можете просто сказать:

[[plistData objectAtIndex:0] writeToFile:filePath atomically:YES];

Однако это помешает вам изменить названия клавиш.

...