2012-02-15 5 views
0

URLからplistを読み込み、そこにある現在のplistを上書きすることができます。以下のコードはシミュレータ上で動作しますが、iPhone 4デバイスをチェックすると、更新されたコンテンツはプルダウンされません。 Xcodeへの新しい人のための知恵の言葉?WebサーバーからPLISTをロードする

Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"]; 
NetworkStatus internetStatus = [r currentReachabilityStatus]; 

if ((internetStatus == ReachableViaWiFi) || (internetStatus == ReachableViaWWAN)){ 

    NSString *path = [[NSBundle mainBundle] bundlePath]; 
    NSString *finalPath = [path stringByAppendingPathComponent:@"SpecialCases.plist"]; 
    NSURL *theFileURL = [NSURL URLWithString:@"http://www.awebsite.com"]; 
    NSDictionary *replace = [[NSDictionary alloc] initWithContentsOfURL:theFileURL]; 
    if (replace != nil){ 
    [replace writeToFile:finalPath 
       atomically:YES]; 
    } 
} 
+0

「更新されたコンテンツをプルダウンしない」と言うと、正確にはどういう意味ですか?ブレークポイントを設定し、コードをステップ実行します - それは条件分岐に入りますか?変数の値を確認してください。 nilを置き換えると、何らかのエラーがスローされますか? –

+0

この状況では到達可能性の状態をチェックするのはあまり意味がありません。ちょっと前にplistをbackground_inにダウンロードしてください。ダウンロードが失敗した場合、あなたは知っているでしょう。あなたは 'if'をコメントアウトしようとしましたか? – Costique

+0

ええ、私はその文をあとでそこに投げることについて考えなかった。私はすでにリーチャビリティを取り除いています。 –

答えて

3

あなたが編集できるサンドボックスの一部ではないため、iOSデバイス上でアプリケーションのバンドルに書き込むことはできません。あなたはこのように、ドキュメントディレクトリにファイルを保存する必要があります。

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *finalPath = [path stringByAppendingPathComponent:@"SpecialCases.plist"]; 

し、後であなたのアプリケーションバンドルには、そこからのplistをロードし、ではありません。

+0

ああ...それは理にかなっている。私はそれを試してみましょう。 –

+0

それがあなたのために働く場合、答えを受け入れることを忘れないでください! –

関連する問題