0


サーバーからのイベント情報を表示する基本的なアプリを作成しようとしています。
これまでのところ、xmlファイルのすべての情報をダウンロードし、NSXMLParserを使用して解析します。
各イベントのすべての情報を格納するイベントオブジェクトを作成し、NSMutableArrayにこれらのイベントを入力します。
次に、各UITableViewセルが表示されるときに、各イベントに関連する画像を非同期でロードし、NSMutableArray内にあるイベントオブジェクトのNSDataに格納します。この方法では、必要な画像のみをロードします。
NSMutableArrayのレイアウトは次のようになります(簡略化):

events
      -event1
            -(NSString *)title
            -(NSURL *)imageURL
            -(NSData *)eventData
      -event2
            -(NSString *)title
            -(NSURL *)imageURL
            -(NSData *)eventData
etc..

ここでのベストプラクティスが何であるかわかりませんが、それを機能させるのに苦労しています。

  • オプション
    1MasterViewControllerから直接設定しようとすると、これは私には正しくないように思われ、エラーが発生します。コードを使用する場合

    [[events objectAtIndex:cellIndexPath.row] eventImageData] = [[NSData alloc] initWithContentsOfURL:[[events objectAtIndex:cellIndexPath.row] eventImgURL]];
    

エラーが発生します:expression not assignable

  • オプション2
    イベントオブジェクト自体にメソッドを記述して画像をダウンロードできます。私はこれを行いましたが、画像の取得が完了すると、イベントオブジェクトがMasterViewControllerに適切なNSTableViewCellを更新するように要求することはできませんでした。

私の質問は、私はこれらの思考の流れのいずれかで正しい軌道に乗っているのかということです。NSMutableArray内のオブジェクト内に新しいNSDataを割り当てることはできますか?それとも、イベントオブジェクトに独自の画像をダウンロードするように依頼するのは正しい方向に進んでいましたか?
この非常に長い質問をお読みいただき、ありがとうございます。

4

2 に答える 2

3

getterメソッドを使用してプロパティを設定することはできません。setterメソッドを使用する必要があります。

[[events objectAtIndex:cellIndexPath.row] setEventImageData:[[NSData alloc] initWithContentsOfURL:[[events objectAtIndex:cellIndexPath.row] eventImgURL]]];
于 2012-09-01T10:08:54.150 に答える
1

NSMutableArray内のオブジェクトを変更する別の方法は次のとおりです。

if([[events objectAtIndex:cellIndexPath.row] count] >=2)
{
  [[events objectAtIndex:cellIndexPath.row] replaceObjectAtIndex:2  withObject:[[NSData alloc] initWithContentsOfURL:[[events objectAtIndex:cellIndexPath.row] eventImgURL]];
}
于 2012-09-01T10:27:38.737 に答える