2015-11-01 3 views
-1

У меня есть следующий SQL, что мне нужно превратился в NSPredicate:Создание NSPredicate на основе офф SQL Query

SELECT * FROM accounts 
WHERE deleted = NO AND inactive = N0 
AND name LIKE 'Harry%' 
ORDER BY accounts DESC, sales DESC; 

Также вместо как в SQL и NSPredicate, могу ли я использовать BEGINSWITH?

ответ

1
NSString *atributeValue [email protected]“Harry”; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@“deleted == %@ && inactive == %@ && name begindsWith %@ ”, @0,@0,atributeValue]; 

NSSortDescriptor *descriptor1 = [nssortDescriptor sortDescriptorWithKey:@“accounts”ascending : NO]; 

NSSortDescriptor *descriptor2 = [nssortDescriptor sortDescriptorWithKey:@“sales”ascending : NO]; 

NSArray *result = [all filteredArrayUsingPredicate: predicate]sortedArrayUsingDescriptors :[NSArray arrayEithObjects:descriptor1,descriptor2]; 

Я надеюсь, что это помогает

1

NSPredicate соответствует только предложению WHERE SQL-запроса. Вы можете использовать name = false and inactive = false and name like 'Harry*', или да, вы могли бы использовать name BEGINSWITH 'Harry' вместо того, чтобы понравиться. Обратите внимание, что он использует групповые маски типа «?» и "*" вместо подстановок SQL. Полная документация доступна по адресу https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html. Класс NSFetchRequest будет представлять остальные части - который указывает объект для извлечения (предложение FROM) и дескрипторы сортировки (предложение ORDER BY) вместе с предикатом.