繁体   English   中英

使用Objective-C中的NSPredicate过滤自定义数据类的数组

[英]Filter Array of Custom Data Class With NSPredicate in Objective-C

我有一个名为DataClass的自定义数据类,这里有详细信息。

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

在我的ViewController类中,我有一个文本字段,在其中输入内容并根据文本显示显示内容。 我有一个名为arrayOfData和filteredDataArray的NSMutableArray arrayOfData包含上述DataClass对象,但是当我尝试使用此代码执行此操作时,我得到了错误

“ ALL或ANY运算符的左侧必须是NSArray或NSSet。”

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

如果要与Integer进行比较,请不要使用contains。 等号比较

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

尝试这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM