0

まず第一に、私はobjective-cとiosの開発にかなり慣れていません。

私は、インターネットからダウンロードされ、UITableView を設定するために使用される .plist を持っています。次のように、AppDelegate の ApplicationDidLaunch メソッドでこれを機能させることができます。

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *finalPath = [path stringByAppendingPathComponent:@"Data.plist"];
NSURL *theFileURL = [NSURL URLWithString:@"http://dl.dropbox.com/u/8068058/Data.plist"];
NSDictionary *replace = [[NSDictionary alloc] initWithContentsOfURL:theFileURL];
if (replace != nil){
    [replace writeToFile:finalPath atomically:YES];
}

次に、それを DataPath として設定します

NSString *Path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *DataPath = [Path stringByAppendingPathComponent:@"Data.plist"];

NSDictionary *tempDict = [[NSDictionary alloc] initWithContentsOfFile:DataPath];
self.data = tempDict;
[tempDict release];

これで問題ありません。次に、TableView にデータを入力して表示します。テーブルを表示する NavgationController に「更新」ボタンを追加するとします。それを押して同じダウンロードコードを実行し、続いて

[self.tableView reloadData];

私は何も得ません、誰もこれを修正する方法を知っていますか?

4

1 に答える 1

0

すでに問題は解決していますが、変更したほうがよい点をいくつか指摘しておきます。

  1. 上記のコードは App Delegate に配置しないでください。TableView を処理する View Controller に配置する必要があります。これにより、起動時の効率が向上し、オブジェクト指向が大幅に向上します。
  2. このアプリをストアに提出する予定がある場合は、ダウンロードしたデータを に保存することに注意する必要がありますNSDocumentsDirectory。ユーザーがいつでもデータを編集できない場合は、ファイルに保存することを強くお勧めしますNSCachesDirectory。そうでない場合は、で試してくださいNSLibraryDirectory。iOS5 Apple は、ダウンロードしたデータをNSDocumentsDirectory.
  3. キャッシングについて言えば、何らかの方法でデータをキャッシュする必要があります。上記のコードでは、アプリを実行するたびにデータをダウンロードして保存しています。インターネットに接続していないとアプリは機能せず、ロードしない場合は plist を保存する意味がないため、これは無意味です。
  4. 私が強くお勧めするもう 1 つのことは、セカンダリでネットワーク フェッチを実行することですqueue。ネットワーク フェッチを実行すると、メイン キューがブロックされます。この場合、ファイル サイズが小さいためほとんど目立たないことはわかっていますが、インターネット接続が悪い場合は、UI がどのようにブロックされているかに気付くでしょう。

iOS向けの開発を始めたとき、私は同じ問題に直面したので、私はこれらのことを指摘しています. これを行う方法について詳しく知りたくない場合は、お気軽にお問い合わせください:)

于 2012-10-02T03:48:08.900 に答える