Полагаю, Алекс прав, что вам нужно использовать NSArray, хотя, очевидно, было бы лучше, если бы здесь был принят NSSet, поскольку порядок не так важен (хотя это могло бы повлиять на скорость выполнения SQL).
В качестве примечания, я никогда не использую вызов + ПредикатВитФормат: в любом коде, потому что он не может выполнять проверку времени компиляции или проверку типов. Я настоятельно советую использовать индивидуальные занятия.
В этом случае я бы сделал:
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, что сделало бы ее более ясной, что пошло не так.