Ich bin ein Neuling zu Objective-C & iPhone Entwicklung, daher bitte ertragen mit mir.Problem mit NSMutableArray und Objektabruf von ihm, bevölkert von NSXMLParser
Ich arbeite an einer App, die mit UITableView lädt und nach der Auswahl einer bestimmten Zelle namens "Adressbuch" sollte es mit einem anderen UITableView laden, die alle Adressen aus einer Webanfrage enthalten. Mit den Delegate-Methoden von NSXMLParser speichere ich diese Adressen in einem NSMutableArray, das in der Headerdatei der geladenen Ansicht definiert ist. Aber das Problem tritt auf, wenn diese Adressen auf den UITableView-Zellen angezeigt werden (ja, ich habe die Anzahl für die Anzahl der Zellen erhalten). Kann mir bitte jemand bei diesem Problem helfen? Ich stecke seit Tagen fest !!! Im Anschluss ist mein Code:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
AddressEntry *entry = (AddressEntry *)[self.addresses objectAtIndex:indexPath.row];
@try
{
NSLog(@"%@", entry.firstName);
}
@catch (NSException * e)
{
@try
{
NSLog(@"%@", entry.lastName);
}
@catch (NSException * e)
{
NSLog(@"%@", entry.lastName);
}
}
[entry release];
return cell;
}
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
self.currentElement = nil;
self.f_Name = nil;
self.l_Name = nil;
self.phone = nil;
self.email = nil;
count = 0;
self.addresses = [[NSMutableArray alloc] init];
}
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"Entries"])
{
count = [[attributeDict valueForKey:@"total"] intValue];
}
else if([elementName isEqualToString:@"FirstName"])
{
[self.f_Name release];
self.f_Name = [[NSString alloc] init];
}
else if([elementName isEqualToString:@"LastName"])
{
[self.l_Name release];
self.l_Name = [[NSString alloc] init];
}
else if([elementName isEqualToString:@"PhoneNumber"])
{
[self.phone release];
self.phone = [[NSString alloc] init];
}
else if([elementName isEqualToString:@"EmailAddress"])
{
[self.email release];
self.email = [[NSString alloc] init];
}
else if([elementName isEqualToString:@"Record"])
{
[self.addrEntry release];
self.addrEntry = [[[AddressEntry alloc] init] retain];
}
[self.currentElement release];
self.currentElement = nil;
self.currentElement = [elementName copy];
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
//
if([elementName isEqualToString:@"FirstName"])
self.addrEntry.firstName = self.f_Name;
else if ([elementName isEqualToString:@"LastName"])
self.addrEntry.lastName = self.l_Name;
else if([elementName isEqualToString:@"PhoneNumber"])
self.addrEntry.mobile = self.phone;
else if([elementName isEqualToString:@"EmailAddress"])
self.addrEntry.emailAddress = self.email;
else if([elementName isEqualToString:@"Record"])
{
[self.addresses addObject:self.addrEntry];
[self.addrEntry release];
self.addrEntry = nil;
/*AddressEntry *e = (AddressEntry *)[self.addresses lastObject];
NSLog(@"%@ %@ %@ %@", e.firstName, e.lastName, e.mobile, e.emailAddress);
[e release];*/
}
}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if([currentElement isEqualToString:@"FirstName"])
self.f_Name = string;
else if([currentElement isEqualToString:@"LastName"])
self.l_Name = string;
else if([currentElement isEqualToString:@"PhoneNumber"])
self.phone = string;
else if([currentElement isEqualToString:@"EmailAddress"])
{
self.email = string;
}
}
Was ist Ihr tatsächliches Problem? – MusiGenesis
Entschuldigung dafür, nicht klar zu sein. Die App stürzt nur ab, nachdem sie diese Zeile getroffen hat @try { NSLog (@ "% @", entry.firstName); } –
Jeder bitte helfen, es bringt mich um (in meinem Kopf) !!! –