Saya membuat metode untuk memulihkan produk dari database saya, setiap item memiliki bidang tinggi, lebar dan percErro (persentase kesalahan),
Pengguna memasukkan lebar dan tinggi yang ingin dicari, misal: 15 x 15cm
Kemudian metode tersebut harus menghasilkan produk yang kompatibel dengan nomor-nomor ini, dengan mempertimbangkan persentase kesalahan yang diperbolehkan dalam pendaftarannya.
Misalkan produk yang ada di database berukuran 14 x 14cm dan persentase errornya 10% (1,4cm), maka Anda mencari produk yang berukuran 15 x 15cm
Dalam permintaan saya, saya harus melakukan sesuatu seperti ini:
[query appendString: [NSString stringWithFormat: @ "(heigthInserted * percErro / 1000) <= (height * percErro / 100)"
[query appendString: [NSString stringWithFormat: @ "AND (widthInserted * percErro / 1000) <= (width * percErro / 100)"
NSPredicate * predicate = [NSPredicate predicateWithFormat: query];
[Request setPredicate: predicate];
Ini akan memberikan saya semua produk yang persentase kesalahannya tidak melebihi 10% (1,4 cm)
Saya tahu NSPredicate tidak menerima operasi matematika, bagaimana saya bisa mendapatkan hasil penghitungan persentase kesalahan ini?
**
Terselesaikan
**
Saya menerima jawaban pbasdf dan menyimpulkan bahwa operator matematika berfungsi di NSPredicate, tetapi harus ditulis sesuai dengan dokumentasi tautan ini: Dokumentasi
Di bawah metode fungsional 100% saya dengan operator:
-(NSMutableArray*)findWithDimensoes:(NSMutableArray*)formatos :(float)largura :(float)altura{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:TABLE_NAME inManagedObjectContext:managedObjectContext]];
NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"altura" ascending:YES];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"largura" ascending:YES];
NSArray *arraySD = [NSArray arrayWithObjects:sortDescriptor1,sortDescriptor2,nil];
[request setSortDescriptors:arraySD];
[request setFetchLimit:20];
NSMutableString *query = [[NSMutableString alloc] init];
[query appendString:[NSString stringWithFormat:@" (habilitado == true) "]];
if (formatos != nil) {
for (ProdutoDimensao *d in formatos) {
if ([d.id intValue] > 0) {
if (([formatos indexOfObject:d] < formatos.count)) {
[query appendString:@" AND "];
}
[query appendString:[NSString stringWithFormat:@" (produtoDimensao.id == %d) ",[d.id intValue]]];
}
}
}
[query appendString:[NSString stringWithFormat:@" AND altura >= from:subtract:(%lf,multiply:by:(%lf,percErro)) AND altura <= add:to:(%lf,multiply:by:(%lf,percErro)) ",altura,altura,altura,altura]];
[query appendString:[NSString stringWithFormat:@" AND largura >= from:subtract:(%lf,multiply:by:(%lf,percErro)) AND largura <= add:to:(%lf,multiply:by:(%lf,percErro)) ",largura,largura,largura,largura]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:query];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
return [results mutableCopy];
}