단일 배열 객체 (여러 값의 nsdictionary)를 기본보기로 전달하려고합니다.NSArray는 NSZombie 오류를 나타냅니다.
기본적으로보기를 설정할 때 일부 xml을 사전 배열로 구문 분석합니다. 그런 다음 NSdictionary 내부의 값 중 하나를 사용하여 tableview를 설정하고이 값은 알파벳순 스크롤러와 섹션 제목을 설정하는데도 사용됩니다. (이것은 내가 작성한 메소드에서 수행됩니다)
해당 메소드의 끝에서 [self.tableView reloadData];를 호출합니다. 모든 것이 완벽하게로드되고 모든 것이 잘 표시됩니다.
이제는 셀을 선택하면 cell.textlabel 내의 값을 확인하고이를 사전의 배열에 대조하는 데 사용할 수 있도록 설정하려고합니다. entry 나는 그 사전을 내가 만든 Delegate와 함께 메인 뷰로 전달하려고한다.
그러나 나는 내 reloadData 때문에 일어날 수 있다고 생각되는 오류가 발생하고 있지만 확실하지는 않습니다. 내 조건 자의 모양입니다.
NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K like %@",@"MANUFACTURER",cell.textLabel.text];
NSArray *filter = [myDataArray filteredArrayUsingPredicate:pred]; //error happens here
//check to see if the value is the correct one
NSLog(@"My Filtered array = %@", filter);
//once problem has been found set up the delegate here.
이 오류 메시지가 표시됩니다. 아래와 같은
2011-10-31 10:43:57.333 code[5812:207] *** -[__NSArrayM filteredArrayUsingPredicate:]: message sent to deallocated instance 0x6874210
myDataArray는 NSXMLParser 위임에서 생성된다.
//.h
NSMutableArray *myDataArray;
}
@property (nonatomic, retain) NSMutableArray *myDataArray;
//.m
어떤 도움을 크게, 또한 내가 사전의 권리를 모든 값을 전달 대해려고 생각 주시면 감사하겠습니다#pragma mark - Parsing lifecycle
- (void)startTheParsingProcess:(NSData *)parserData
{
//myDataArray = [NSMutableArray arrayWithCapacity:8]; // not even sure if this is needed as its declared later on.
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:parserData]; //parserData passed to NSXMLParser delegate which starts the parsing process
[parser setDelegate:self];
[parser parse]; // starts the event-driven parsing operation.
[parser release];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"Row"])
{
manufactureMutableDictionary = [[NSMutableDictionary alloc] initWithDictionary:attributeDict];
}
if([elementName isEqualToString:@"Rows"])
{
myDataArray = [NSMutableArray arrayWithCapacity:8];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([elementName isEqualToString:@"Row"])
{
[myDataArray addObject:manufactureMutableDictionary];
}
[manufactureMutableDictionary release];
manufactureMutableDictionary = nil;
}
방법?
는 당신이 우리를 보여줄 수 더 나은? – edc1591
나는 위에 추가했다 : 0 –
방금 추가 한 코드가'NSPredicate' 코드와 같은 클래스에 있습니까? – edc1591