récupérer des objets de base de données non dans un ensemble
Je suis en train de chercher des objets de base de données qui ne sont pas dans un ensemble donné, mais je n'ai pas été en mesure de l'obtenir pour fonctionner.
Par exemple, supposons que nous disposons d'une base de données de l'entité nommée de l'Utilisateur, qui a un peu d'attributs tels que le nom d'utilisateur, nomdefamille, givenName, et active. Étant donné un tableau de chaînes représentant un ensemble de noms d'utilisateur, on peut facilement récupérer tous les utilisateurs correspondant à cette liste de noms d'utilisateurs:
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"
inManagedObjectContext:moc];
[request setEntity:entity];
NSArray *userNames = [NSArray arrayWithObjects:@"user1", @"user2", @"user3", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName IN %@", userNames];
[request setPredicate:predicate];
NSArray *users = [moc executeFetchRequest:request error:nil];
Cependant, je veux aller chercher le complément de ce jeu, c'est à dire, je veux que tous les utilisateurs dans la base de données qui n'ont pas les noms d'utilisateur spécifié dans le tableau des noms d'utilisateur. Quelqu'un aurait-il une idée de comment aborder cette question? Je pensais que ce serait assez simple pour ajouter un "NOT"
dans le prédicat (i.e., "userName NOT IN %@")
, mais Xcode déclenche une exception dire le prédicat format n'a pas pu être analysée. J'ai aussi essayé d'utiliser le prédicat builder disponible pour aller chercher les demandes avec pas de chance. La documentation n'était pas particulièrement utile. Des Suggestions? Des commentaires? Merci à tous pour votre aide 🙂
Vous devez vous connecter pour publier un commentaire.
Afin de trouver les objets qui ne sont pas dans votre tableau, tout ce que vous avez à faire est quelque chose comme ceci:
Qui doit renvoyer une demande de tous les objets sans ceux que vous avez spécifié
[NSPredicate predicateWithFormat:@"NOT (enumWrapper IN {%d, %d})", enum1, enum2]
.[NSPredicate predicateWithFormat:@"userName IN %@", userNames]
fonctionne parfaitementJe ne suis pas solide à la base de données/objective-c, mais le prédicat doit être comme la déclaration suivante;
Un exemple:
Voici un autre exemple montrant comment faire une liste de chaînes de caractères, et de filtrer tout ce qui NE commence PAS par les lettres de A-Z:
J'utilise ce genre de
NSPredicate
quand je suis remplissage d'uneUITableView
avec un index A à Z, et de vouloir "tout le reste" de la section pour les articles qui ne commencent pas par une lettre.