我想通過一個單一的數組對象(這是一個nsdictionary的幾個值)回我的主視圖。NSArray給NSZombie錯誤
基本上,當我設置視圖時,我將一些xml解析爲一個字典數組。然後,我使用NSdictionary中的一個值設置我的tableview,這個值也用於設置字母滾動條和節標題。 (這是在我創建的方法中完成的)
在該方法結束時,我調用[self.tableView reloadData];每件事物都完美地裝載起來,一切都很好。
現在我想要做的就是設置它,這樣當選中一個單元格時,我檢查cell.textlabel中的值並將其用作謂詞來檢查字典數組一旦它找到相應的條目我想用我已經創建的代表將該字典傳遞給主視圖。
但是我得到一個錯誤,我認爲,由於我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;
}
任何幫助將不勝感激,還你覺得我會關於通過字典中的所有值權辦法?
你能告訴我們在哪兒'myDataArray'從何而來? – edc1591
我已經在上面添加了:0 –
您剛剛添加的代碼與'NSPredicate'代碼在同一個類中嗎? – edc1591