저는 Objective-C & iPhone 개발의 초보자이므로 나와 함께하시기 바랍니다.NSMutableArray 및 NSXMLParser에서 채워진 개체 검색에 문제가 발생했습니다.
나는 UITableView로로드하는 응용 프로그램을 만들고 "주소록"이라는 특정 셀을 선택하면 웹 요청에서 검색 한 모든 주소를 포함하는 다른 UITableView를로드해야합니다. NSXMLParser의 델리게이트 메서드를 사용하여로드 된 뷰의 헤더 파일에 정의 된 NSMutableArray에 해당 주소를 저장합니다. 하지만 문제는 해당 주소가 UITableView 셀에 표시 될 때 발생합니다 (예, 셀 수에 대한 카운트가 있음). 아무도이 문제로 나를 도울 수 있습니까? 나는 일 동안 이것을 지금 붙들 게된다! !! 응용 프로그램의 충돌의 가능성이 가장 높은 이유는 cellForRowAtIndexPath에서이 줄
- (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;
}
}
실제 문제는 무엇입니까? – MusiGenesis
명확하지 않은 것에 대해 사과드립니다. 앱이이 줄을 칠 때 충돌합니다. { NSLog (@ "% @", entry.firstName); } –
누구든지 제발 (내 머리에) 죽이는 것을 도와주세요 !!! –