Как получить данные json по URL-адресу и записать их в файл?

введите здесь описание изображения

Как показано на снимке экрана выше, у меня есть файл json (productDetail.json) в моем приложении, затем я пишу файл из данных json, как показано ниже.

else if([(MultipleURLConnection *)connection tag]==2)
    {
  if([fn writeToFile:responseData fileName:@"productDetail.json"])
       [self performSelector:@selector(loadingJSON) withObject:nil afterDelay:0.1];
    }

в приведенном выше коде responseData - это NSMutableData, а fn - это имя объекта класса функции, где у меня есть метод ниже

- (BOOL)writeToFile:(NSData *)data fileName:(NSString *)fileName 
 {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *myFile = [documentsDirectory stringByAppendingPathComponent:fileName];
NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:myFile])  // if file doesn't exist, create it
    return ([fm createFileAtPath:myFile contents:data attributes:nil]);
else
    return ([data writeToFile:myFile atomically:YES]);  
 }

Теперь я решил удалить файл json из приложения и поместить его на сервер, а затем получить его. Поэтому после помещения файла json на сервер я попытался получить его, как показано ниже.

else if([(MultipleURLConnection *)connection tag]==2)
    {
        NSURL *url = [NSURL URLWithString:@"http://mysite.com/Infomist/productDetail.json"];
        NSData *jsonData = [NSData dataWithContentsOfURL:url];

        if(jsonData != nil)
        {
            NSError *error = nil;

            id result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
            if (error == nil)
              NSLog(@"show data %@",result);
       }

Теперь вышеописанный метод успешно извлекает мои данные с сервера, он показывает все мои данные в NSlog, но теперь проблема для меня заключается в том, как изменить этот метод сейчас

     if([fn writeToFile:responseData fileName:@"])

Потому что после размещения файла json на сервере у меня нет файла для передачи имени файла в указанном выше методе для вызова

- (BOOL)writeToFile:(NSData *)data fileName:(NSString *)fileName  .

У меня уже есть поток приложений для локального файла json, поэтому мне нужно только записать данные json в свое приложение.


person jamil    schedule 22.02.2013    source источник


Ответы (1)


- (BOOL)writeToFile:(NSData *)data fileName:(NSString *)fileName 

выше требуется NSData в качестве параметра

        id result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];

приведенное выше дает id в качестве объекта возвращаемого типа.. вам нужно проверить, какой тип объекта он использует isKindOfClass

а затем преобразовать его в данные с помощью декодирования/NSkeyedArchiver или других методов.

person Shubhank    schedule 26.02.2013