0

ここに画像の説明を入力してください

上記のスクリーンショットでは、アプリに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データを書き込むだけで済みます。

4

1 に答える 1

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

上記はNSDataパラメータとして必要です

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

上記はid戻り型オブジェクトとして与えます..あなたはそれが使用しているオブジェクトのタイプをチェックする必要がありますisKindOfClass

その後、デコード/NSkeyedArchiverまたは他の手法を使用してデータに変換します

于 2013-02-26T16:31:34.277 に答える