2016-04-25 6 views
0

私はDataClassというカスタムクラスのデータを持っています。私ViewControllerクラスでObjective-CのNSPredicateを使用したカスタムデータクラスのフィルタ配列

@interface DataClass : NSObject 

@property (assign,nonatomic)NSInteger invoiceID; 
@property (assign,nonatomic)NSInteger anInvoiceID; 
@property (strong,nonatomic)NSString *customerName; 
@property (strong,nonatomic)NSString *departmentName; 
@property (strong,nonatomic)NSString *typeNumberOfInvoice; 
@property (strong,nonatomic)NSString *invoiceDate; 
@property (strong,nonatomic)NSString *stockNumber; 
@property (strong,nonatomic)NSString *vehicleDetail; 
@property (strong,nonatomic)NSString *rONumber; 
@property (assign,nonatomic)NSInteger amount; 
@property (strong,nonatomic)NSString *color; 
@property (strong,nonatomic)NSString *year; 
@property (strong,nonatomic)NSString *location; 
@property (strong,nonatomic)NSString *carVinNumber; 
@property (strong,nonatomic)NSString *dealership; 
@property (strong,nonatomic)NSString *technician; 
@property (strong,nonatomic)NSData *imageData; 
@property (strong, nonatomic)NSMutableArray *arrayOfLocations; 

私は入力を取り、テキストによる表示を示す午前テキストフィールドを持っています。 arrayOfDataとfilteredDataArrayという名前のNSMutableArrayがあります。 arrayOfDataは、上記DataClassのオブジェクトが含まれていますが、私はこのコードを使用してこれを実行しようとしたこれまで私は、エラー

を取得するときに「ALLまたはANY演算子の左辺はNSArrayのかNSSetのいずれかでなければなりません。」

 NSPredicate *aToZPredicate = 
    [NSPredicate predicateWithFormat:@"ANY invoiceID CONTAINS[cd] %@", searchText]; 
    filteredDataArray = [arrayOfData filteredArrayUsingPredicate:aToZPredicate]; 
    [_tableView reloadData]; 
+0

と比較 – Chetan

+0

NSPredicateを試してみてください*述語が= [NSPredicate predicateWithFormatは:@ "ANY invoiceIDは、[C]%の@を含む"、検索テキスト]; – iOS

+0

ANYを削除します。また、タイプNSIntegerのフィールドを含むcontainsを使用することはできません – ZeMoon

答えて

1

を試してみてください。あなたは、顧客名ごとに、それをフィルタリングする等号

NSPredicate *aToZPredicate = 
     [NSPredicate predicateWithFormat:@"invoiceID == %d", [searchText intValue]]; 
     filteredDataArray = [arrayOfData filteredArrayUsingPredicate:aToZPredicate]; 
     [_tableView reloadData]; 
1

あなたはInteger型と比較している場合は含まれ使用することはありません。この

NSPredicate *aToZPredicate = 
[NSPredicate predicateWithFormat:@"CAST(SELF.invoiceID, 'NSString') contains[cd] %@", searchText]; 
filteredDataArray = [arrayOfData filteredArrayUsingPredicate:aToZPredicate]; 
[_tableView reloadData]; 
+0

NSStringオブジェクトで==記号を使用できないため、NSStringオブジェクトに従って検索したい場合はどうしますか?これを具体化してください –

+0

文字列で検索する私の答えを更新しました。 – Imran

+0

ありがとうImran bhaii –

関連する問題