ファイルに次のようなものが含まれるURLとしてXMLファイルがあります。
<Products>
<products id="1">
<name>product1</name>
<price>$150</price>
<img>http://www.myimage.com/Main_pic.png</img>
</products>
</Products>
NSXMLParser を使用してデータと画像を取得できますが、それらのデータを取得した後、NSMutableArray または NSDictionary に格納する方法がわかりません。また、 Lazy Loading Table Images Asynchronous Downloading from Appleから遅延読み込み非同期画像ダウンロードを実装しようとしました。しかし、私は画像を読み込めませんでした。非同期ロードの代替手段はありますか。
親切に私を詳しく説明してください、
- aysnchronousダウンロードでurl XMLファイルから取得したデータを格納する方法。
- データと画像を分離する方法。
- それらを UIImage に実装し、データを iPhone で表示する方法。
編集済み
理解を深めるために、テーブルビューではなく、下の図のようなデータと画像が必要です。
EDITED-2 遅延読み込み解析を使用して、参照用のコードをここのコンテンツに従って変更しました。
- (void)main{
self.workingArray = [NSMutableArray array];
self.workingPropertyString = [NSMutableString string];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:dataToParse];
[parser setDelegate:self];
[parser parse];
if (![self isCancelled]){
self.completionHandler(self.workingArray);}
self.workingArray = nil;
self.workingPropertyString = nil;
self.dataToParse = nil;}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if ([elementName isEqualToString:@"Products"]){
self.workingEntry = [[egsLists alloc] init];}
storingCharacterData = [elementsToParse containsObject:elementName];}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if (self.workingEntry){
if (storingCharacterData){
NSString *trimmedString = [workingPropertyString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[workingPropertyString setString:@""];
if ([elementName isEqualToString:sIDStr]){
self.workingEntry.ProductID = trimmedString;}
else if ([elementName isEqualToString:sImageStr]){
self.workingEntry.img = trimmedString;}}
else if ([elementName isEqualToString:@"Products"]){
[self.workingArray addObject:self.workingEntry];
self.workingEntry = nil;}}}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if (storingCharacterData){
[workingPropertyString appendString:string];}}