2016-04-25 8 views
0

Ich habe eine benutzerdefinierte Klasse von Daten mit dem Namen DataClass Hier gibt es Details.Filter Array von benutzerdefinierten Datenklasse mit NSPredice in Objective-C

@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; 

In meiner ViewController Klasse habe ich ein Textfeld, wo ich Eingänge nehme und Anzeige zeigt den Text nach. Ich habe eine NSMutableArray namens arrayOfData und filteredDataArray. arrayOfData enthält Objekte der oben DataClass aber wann immer ich versuchte, dies zu tun, um diesen Code mit i Fehlern

get ‚Die linke Seite für ein alle oder einen Betreiber muss entweder ein NSArray oder NSSet sein.‘

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

Sie wollen es filtern nach Kundenname – Chetan

+0

versuchen NSPredicate * Prädikat = [NSPredicate predicateWithFormat: @ "ANY InvoiceID ENTHÄLT [c]% @", search]; – iOS

+0

Entfernen Sie ALLE. Auch können Sie nicht enthält enthält mit einem Feld des Typs NSInteger – ZeMoon

Antwort

1

Versuchen Wenn Sie mit vergleichen Integer enthält nie verwenden. Vergleichen Sie mit Gleichheitszeichen

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

dieses

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

Sir, wenn ich nach einem NSString-Objekt suchen möchte, da wir == Zeichen mit NSString-Objekten nicht verwenden können. Bitte erarbeiten Sie diese –

+0

Ich habe meine Antwort auf die Suche in Zeichenfolge aktualisiert. – Imran

+0

Vielen Dank Imran bhaii –

Verwandte Themen