Objective-C, iPhone Приложение для чтения RSS-запросов - Как организовать отображение RSS-ленты в группы? - PullRequest
0 голосов
/ 27 августа 2010

Мне очень не повезло с моим программированием. Я все еще плохо знаком с Objective-C, но я стараюсь учиться как можно быстрее.

Мне нужно заполнить приложение RSS Reader для iPhone, относительно простое, которое анализирует RSS-канал, отображает его в виде таблицы навигации, и когда вы щелкаете статью, вы попадаете на главную страницу.

К сожалению, у меня возникли проблемы с анализом. В настоящее время программа загружает все статьи, но я хотел бы отобразить ее в списках по 10, а также следующую кнопку внизу. Как только следующая кнопка нажата, синтаксический анализ продолжается и отображаются следующие 10 символов.

Извините, но я не могу показать вам код, который я использую в данный момент, поскольку я нахожусь на своем домашнем компьютере, а проект находится на офисном Mac. Если бы кто-нибудь мог дать мне несколько идей, я был бы очень благодарен. Я перепробовал ряд методов (например, создание дополнительного массива в качестве счетчика статей, чтобы я мог записать, какая статья для какого списка, например), но я продолжаю сталкиваться с препятствиями, так как просто не знаю, как правильно использовать программу достаточно, чтобы сделать это.

Пожалуйста, мне очень нужно! Спасибо.

1 Ответ

0 голосов
/ 27 августа 2010

(Это снова я) Мне очень жаль, если это довольно расплывчато, но я верю, что могу привести пример кода.Я пытаюсь сделать так, чтобы программа делала паузу после разбора 10 статей, отображает эти 10, затем продолжает анализ и отображает еще 10, если нажата следующая кнопка.

В parser.m я написал:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];

if ([elementName isEqualToString:@"item"]) {
    item = [[NSMutableDictionary alloc] init];
    self.currentTitle = [[NSMutableString alloc] init];
    self.currentDate = [[NSMutableString alloc] init];
    self.currentSummary = [[NSMutableString alloc] init];
    self.currentLink = [[NSMutableString alloc] init];
    self.currentImage = [[NSMutableString alloc] init];
}//IF END
//podcast url is an attribute of the element enclosure
if ([currentElement isEqualToString:@"enclosure"]) {
    [currentImage appendString:[attributeDict objectForKey:@"url"]];
    NSLog(@"Image = %@", currentImage);
}//IF END
else if([currentElement isEqualToString:@"img"]){
    [currentImage appendString:[attributeDict objectForKey:@"src"]];
    NSLog(@"Image = %@", currentImage);
}//ELSE IF END

}

У меня также есть раздел с символами didEndElement и Found:

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

if ([elementName isEqualToString:@"item"]) {
    [item setObject:self.currentTitle forKey:@"title"];
    [item setObject:self.currentLink forKey:@"link"];
    [item setObject:self.currentSummary forKey:@"summary"];
    [item setObject:self.currentImage forKey:@"image"];


// Parse date here
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
    [dateFormatter setDateFormat:@"EEE, d MMM yyyy"]; // Thu, 18 Jun 2010 04:48:09 -0700
    NSLog(@"FC date1 = %@", self.currentDate);
    NSDate *date = [[NSDate alloc] init]; 
    date = [dateFormatter dateFromString:currentDate];
    NSLog(@"FC date2 = %@", date);

    [item setObject:self.currentDate forKey:@"date"];
    //[item setObject:date forKey:@"date"];
    [date release];
    [items addObject:[item copy]];
    NSLog(@"Item details = %@", items);

    [count addObject:[item objectForKey:@"title"]];
    NSLog(@"count = %@", count);
}//IF END

}

У меня также были некоторые проблемыс форматированием даты, но это незначительная проблема.

также:

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

if ([currentElement isEqualToString:@"title"]) {
    [self.currentTitle appendString:string];
} else if ([currentElement isEqualToString:@"link"]) {
    [self.currentLink appendString:string];
} else if ([currentElement isEqualToString:@"image"]) {
    [self.currentImage appendString:string];
} else if ([currentElement isEqualToString:@"description"]) {
    [self.currentSummary appendString:string];
} else if ([currentElement isEqualToString:@"pubDate"]) {
    [self.currentDate appendString:string];
    NSCharacterSet* charsToTrim = [NSCharacterSet characterSetWithCharactersInString:@" \n"];
    [self.currentDate setString: [self.currentDate stringByTrimmingCharactersInSet: charsToTrim]];
}//IF-ELSE-IF END

}

Я был бы очень признателен, если бы кто-то мог дать мне подсказку о том, чтосделать паузу в программе ... или разрешить мне разобрать группы по 10 ... Я в растерянности; _;

Спасибо за потраченное время.

...