CoreData на iPhone поддерживают В предикатах?

Владельцем является Окно* ответственный за управление или диалоговое окно (например, ответственный за создание/уничтожение окна).

Родитель является следующим старшим окном* к управлению или диалоговому окну в цепочке окна, но не на самом деле ответственен за него (не обязательно заботится о его жизненном цикле, и т.д.). Родитель окна может также быть своим владельцем.

*Window по сравнению с окном: Окно является фактическим окном, отображенным на экране; окно является любым объектом с HWND (включает кнопки, панели, и т.д.).

5
задан Peter Hosey 9 November 2009 в 01:35
поделиться

1 ответ

Я считаю, что Алекс прав в том, что вам нужно использовать NSArray, хотя, очевидно, было бы лучше, если бы здесь был принят NSSet, поскольку порядок не так важен (хотя это может повлиять на то, как SQL может работать быстро).

В качестве примечания, я никогда не использую вызов + predicateWithFormat: ни в каком коде, потому что он не может выполнять корректную работу во время компиляции или проверку типов. Я настоятельно рекомендую использовать отдельные классы.

В этом случае я бы сделал:

fetchRequest.entity = [NSEntityDescription entityForName:@"myRecord" inManagedObjectContext:self.managedObjectContext]];

NSArray *shipTypes = [NSArray arrayWithObjects:[NSNumber numberWithInt:70],
                                        [NSNumber numberWithInt:71],
                                        [NSNumber numberWithInt:72],
                                        [NSNumber numberWithInt:73],
                                        [NSNumber numberWithInt:74],
                                         nil];
fetchRequest.predicate = [NSComparisonPredicate predicateWithLeftExpression:[NSExpression expressionForKeyPath:@"type"] rightExpression:[NSExpression expressionForConstantValue:shipTypes] modifier:NSDirectPredicateModifier type:NSInPredicateOperatorType options:0];

theRecords = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

Не то, чтобы это могло поймать эту конкретную ошибку во время компиляции, но оно потенциально БЫЛО обнаружено на уровне NSExpression, таким образом делая гораздо яснее, что пошло не так.

15
ответ дан 18 December 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: