1
- (NSManagedObjectContext *)anObjectByEntityForName:(NSString *)entityName withValue:(NSObject *)value forKeyPath:(NSString *)keyPath {
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:self.managedObjectContext]];
[request setPredicate:[NSPredicate predicateWithFormat:@"%@ == %@", keyPath, value]];

NSError *error = nil;
NSMutableArray *mutableFetchResults = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (!mutableFetchResults) {
    [request release];
    [mutableFetchResults release];
    return nil;
}

if ([mutableFetchResults count] == 0) {
    [request release];
    [mutableFetchResults release];
    return nil;
}

id anObject = [mutableFetchResults objectAtIndex:0];
[request release];
[mutableFetchResults release];

return anObject;
}

このコードは、キーパスが「isSelected」で値が @YES の場合に nil を返します。ただし、述語がない場合は、すべてのオブジェクトが返されます。データベースには、基準を満たすオブジェクトが少なくとも 1 つあります。何が間違っている可能性がありますか?

4

1 に答える 1