0

xCode4.3.2を使用しています。このプロジェクトでは、xmlデータを読み取り、それをuiTableViewに配置しましたが、ここでは、出力データ(「4000」以上)の価格のみをリストしたいと思います。どうすればこれの条件を設定できますか?手伝っていただけませんか?

私のXML:

<oembed>
<Company><name>ABC</name><price>2000</price></Company>
<Company><name>JP</name><price>4000</price></Company>
<Company><name>VB</name><price>5000</price></Company>
</oembed>

ViewController.m

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
    attributes:(NSDictionary *)attributeDict 
{

    if([elementName isEqualToString:@"oembed"]) 
    {
        books = [[NSMutableArray alloc] init];
    }
    else if([elementName isEqualToString:@"Company"]) 
    {
        aBook = [[Book alloc] init];
    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 

    if(!currentElementValue) 
        currentElementValue = [[NSMutableString alloc] initWithString:string];
    else
        [currentElementValue appendString:string];

}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

    if([elementName isEqualToString:@"oembed"])
        return;

    if([elementName isEqualToString:@"Company"]) {

        [books addObject:aBook];

        [aBook release];
        aBook = nil;
    }
    else 
        [aBook setValue:currentElementValue forKey:elementName];

    [currentElementValue release];
    currentElementValue = nil;
}

私を助けてください。

4

1 に答える 1

1

booksテーブルにデータを表示する前に、配列をフィルタリングしてみてください。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.price >= 4000"];
NSArray *filtered = [books filteredArrayUsingPredicate:predicate];

このコードは、ある種の辞書または。という名前のプロパティを持つカスタムオブジェクトを使用していることを前提としていることに注意してくださいprice

于 2012-04-18T12:03:18.750 に答える