私は1つの配列オブジェクト(いくつかの値のnsdictionary)をメインビューに渡そうとしています。NSArrayはNSZombieエラーを返します
基本的に私はビューを設定するときにいくつかのXMLを辞書の配列に解析します。次に、NSdictionary内の値の1つでテーブルビューを設定します。この値はアルファベット順のスクロールとセクションタイトルの設定にも使用されます。 (これは私が作成したメソッドで行われます)
私は[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;
}
任意の助けをいただければ幸いです、また、あなたが、私は辞書のすべての値に権利を渡すことについてつもりだと思います方法?
はあなたが私たちを見ることができ、より良いですか? – edc1591
私は上に追加しました:0 –
あなたは 'NSPredicate'コードと同じクラスに上に追加したコードですか? – edc1591