2010-08-26 5 views
0

J'ai été très fâché avec ma programmation. Je suis encore un peu novice en Objective-C, mais j'essaie d'apprendre le plus rapidement possible. J'ai besoin de compléter une application RSS Reader pour iPhones, une application relativement simple qui analyse le flux rss, l'affiche dans une table de navigation et lorsque vous cliquez sur un article, vous êtes redirigé vers une page principale. Malheureusement, j'ai de la difficulté avec l'aspect de l'analyse syntaxique. Actuellement, le programme télécharge tous les articles, mais je voudrais l'afficher dans des listes de 10, avec un bouton suivant en bas. Une fois que le bouton suivant est cliqué, l'analyse continue et les 10 suivants sont affichés.Objective-C, Requête pour iPhone RSS Reader Application - Comment organiser votre flux RSS Afficher en groupes?

Je suis désolé mais je ne peux pas vous montrer le code que j'utilise en ce moment car je suis sur mon ordinateur à la maison et le projet est sur le bureau mac. Si quelqu'un pouvait me donner des idées, je serais très reconnaissant. J'ai essayé un certain nombre de méthodes (faire un tableau supplémentaire pour agir comme un compteur d'article afin que je puisse enregistrer quel article est pour quelle liste, par exemple) mais je continue à courir dans des barrages routiers comme je ne sais pas comment bien utiliser le programme assez pour le faire.

S'il vous plaît, je suis dans le besoin! Je vous remercie.

Répondre

0

(Ceci est encore moi) Je suis désolé si cela est plutôt vague, mais je crois que je peux donner un exemple de code. J'essaie de faire en sorte que le programme arrête l'analyse après 10 articles sont analysés, affiche ces 10, puis continue l'analyse et affiche un autre 10 si un bouton suivant est pressé.

Dans le parser.m, je l'ai écrit:

- (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 

}

J'ai aussi la section didEndElement et caractères trouvés:

- (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 

}

Je aussi eu quelques problèmes avec le formatage de la date, mais c'est un problème mineur.

aussi:

- (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 

}

Je vous serais très reconnaissant si quelqu'un pouvait me donner une astuce sur ce qu'il faut faire pour mettre en pause le programme ... ou me permettre d'analyser en groupes de 10 ...Je n'arrive pas ;_;

Nous vous remercions de votre temps.