Μετάβαση στο περιεχόμενο


Φωτογραφία

Βοήθεια σχετικά με strings


  • Παρακαλούμε συνδεθείτε για να απαντήσετε
16 μηνύματα σε αυτό το θέμα

#16   nickbit

nickbit

    iPH Member

  • 287 μηνύματα
  • Twitter:@bitoulas
  • Φύλο: Άντρας
  • Κινητό: iPhone 4S
  • Tablet:iPad 4

Δημοσίευση 21/01/2012 - 20:25

και αυτή ήταν η ερώτησή μου στο προηγούμενο ποστ, γιατί μπαίνει τόσες φορές στη foundCharacters ?
απο κει ξεκίνησε το πρόβλημα και άρχισα να ψάχνομαι για να καταλήξω εδώ.


Έτσι δουλεύει ο parser. Σου στέλνει αυτά που διαβάζει κομμάτι-κομμάτι. Είναι στην ευθύνη σου είτε να το κάνεις parse on the fly ή στη δική σου περίπτωση να συνθέσεις το συνολικό string.

Οπότε όρισε στην class

@property(nonatomic, retain) NSString *currentNodeContent;

@synthesize currentNodeContent στο implementation

και
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
self.currentNodeContent = [currentNodeContent stringByAppendingString:string];
}

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"Element Found : %@", elementname);
if ([elementname isEqualToString:@"title"])
{
currentFeed.rssTitle = [currentNodeContent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
} else if ([elementname isEqualToString:@"description"]) {
currentFeed.rssDescription = [currentNodeContent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
} else if ([elementname isEqualToString:@"pubDate"]) {
currentFeed.rsspubDate = currentNodeContent;
} else if ([elementname isEqualToString:@"item"]) {
[rssFeeds addObject:currentFeed];
currentFeed = nil;
}
}

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
self.currentNodeContent = @"";

if ([elementname isEqualToString:@"item"])
{
currentFeed = [[rssReader alloc] init];
}
}

Τελευταία επεξεργασία από: nickbit, 21/01/2012 - 20:30


Ad

Ad

Team
iPhoneHellas
3,1416 μηνύματα
Twitter: @android
Φύλο: Όπως το δει κανείς
Κινητό: Android
Tablet: Για τα κουνούπια

Γιατί να γίνετε μέλη;

#17   mixahlos

mixahlos

    iPH newbie

  • 10 μηνύματα
  • Φύλο: Δ/Α

Δημοσίευση 23/01/2012 - 01:54

Έτσι δουλεύει ο parser. Σου στέλνει αυτά που διαβάζει κομμάτι-κομμάτι. Είναι στην ευθύνη σου είτε να το κάνεις parse on the fly ή στη δική σου περίπτωση να συνθέσεις το συνολικό string.

Οπότε όρισε στην class

@property(nonatomic, retain) NSString *currentNodeContent;

@synthesize currentNodeContent στο implementation

και
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
self.currentNodeContent = [currentNodeContent stringByAppendingString:string];
}

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"Element Found : %@", elementname);
if ([elementname isEqualToString:@"title"])
{
currentFeed.rssTitle = [currentNodeContent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
} else if ([elementname isEqualToString:@"description"]) {
currentFeed.rssDescription = [currentNodeContent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
} else if ([elementname isEqualToString:@"pubDate"]) {
currentFeed.rsspubDate = currentNodeContent;
} else if ([elementname isEqualToString:@"item"]) {
[rssFeeds addObject:currentFeed];
currentFeed = nil;
}
}

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
self.currentNodeContent = @"";

if ([elementname isEqualToString:@"item"])
{
currentFeed = [[rssReader alloc] init];
}
}


Άψογος !!!

όλα τέλεια, ευχαριστώ πολύ.

Νομίζω πως το θέμα έκλεισε.




Χρήστες που διαβάζουν αυτό το θέμα: 2

0 μέλη, 2 επισκέπτες, 0 ανώνυμοι χρήστες