Я создаю сложный NSPredicate, который варьируется в зависимости от многих переменных. Метод, который лучше всего работает, состоит в том, чтобы построить каждое предложение отдельно как строку, объединить строки в массив, скрывать массив обратно в строку и прочитать его в предикат, используя предикатWithFormat. Он отлично работает за исключением одного случая, когда я сравниваю даты, и я получаю следующее сообщение об ошибке:Ошибка создания синтаксиса строкового предиката
Unable to parse the format string "(canceled != 1)&&(starttime >=2016-12-18 13:50:41 +0000)"'
Вот строка, где я строй этой статьи.
typePredClause = [NSString stringWithFormat:@"(starttime >=%@)",nowstr];
starttime
в сущности NSDate
и это, как я получаю nowstr
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *nowstr = [dateFormatter stringFromDate:[NSDate date]];
Я знаю, что было бы идеально, чтобы просто использовать predicateWithFormat
и оставить строки из него, но предикат так сложно, что строительство это единственное, что нужно.
Может кто-нибудь предложить, как исправить это?
В качестве ссылки здесь приведен код, в котором я объединяю все предложения.
if (typePredClause.length > 0)
[predArr addObject:typePredClause];
NSString *predStr = [predArr componentsJoinedByString:@"&&"];
predicate = [NSPredicate predicateWithFormat:predStr];
Я отредактировал его без строк, используя сложный подход предиката и проблему. Благодаря! – Arjun