連絡先リストの上に検索バーを作成するためのアプリケーションを作成しています。検索バーを押すとアプリがクラッシュします。アプリケーションをデバッグしたところ、この行でクラッシュが発生することがわかりました。filteredCandyArray = [NSMutableArray arrayWithArray:[candyArray filteredArrayUsingPredicate:predicate]];
私がプログラムで行っていることは、すべての連絡先 (name,no.and image) を取得し、配列 (candyArray) に追加することです。しかし、NSPredicate 操作を実行しようとすると、このメッセージが表示され、アプリケーションがクラッシュします。以下のメッセージを与えます。
wetwert[2380:60b] * キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了します。理由: '[ valueForUndefinedKey:]: このクラスは、キー名のキー値コーディングに準拠していません。* First throw call stack: (0x2d51ae83 0x378776c7 0x2d51ab89 0x2ded6e3f 0x2de3c139 0x2de7a3f7 0x2de79fb5 0x2de79083 0x2de7901f 0x2de78e2d 0x27d23 0x27f37 0x2fe92b79 0x2fcd3da3 0x2fcd3d3f 0x2fcd3d13 0x2fcbf743 0x2fe928ed 0x2fcdd8b1 0x2fe53b67 0x2fe5310f 0x2fe92727 0x2fe52e2d 0x2de49aa5 0x2fce1485 0x2fe52d5f 0x2fcc9049 0x2defee4b 0x2d4e5f1f 0x2d4e53e7 0x2d4e3bd7 0x2d44e471 0x2d44e253 0x321882eb 0x2fd03845 0x28451 0x37d70ab7) libc++abi. dylib: タイプ NSException のキャッチされない例外で終了します
array.belowに追加するためのコードを提供しています
for (int i=0; i<_contactsarray.count; i++) {
[candyArray addObject:[store candyofcategory:[_contactsarray objectAtIndex:i] phone:[_numbersarray objectAtIndex:i] image:[_imagesarray objectAtIndex:i]]];
3 つの配列には name,phone no が含まれています。と画像。呼び出されるメソッドを以下に示します。
+(id)candyofcategory:(NSString *)name phone:(NSString *)phone image:(UIImage *)image{
store *newstore=[[self alloc]init];
newstore.c_name=name;
newstore.c_phone=phone;
newstore.cnt_image=image;
return newstore;
}
このメソッドは NSObject クラスの「ストア」クラスにあります。データを取得してテーブルビューに表示できますが、この配列で述語操作を呼び出すとクラッシュします。問題に関するアイデアはありますか? 以下の Predicate メソッドを追加します
-(void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope {
// Update the filtered array based on the search text and scope.
// Remove all objects from the filtered search array
[self.filteredCandyArray removeAllObjects];
// Filter the array using NSPredicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@",searchText];
filteredCandyArray = [NSMutableArray arrayWithArray:candyArray];
filteredCandyArray = [NSMutableArray arrayWithArray:[candyArray filteredArrayUsingPredicate:predicate]];
}