views:

252

answers:

1

My managed object has a relationship called items. My subclass has a method called itemCount. Unfortunatly my attempts to get the object count in the items relationship always returns 0. Here's the relevant code:

@interface List : NSManagedObject {}

@property (nonatomic, retain) NSSet* items;
@property (nonatomic, readonly) NSNumber * itemCount;

@end

@implementation List

@dynamic items;

- (NSNumber *)itemCount 
{
    NSNumber * tmpValue;

    NSSet *items = self.items;
    if (items = nil) {
        return 0;
    }
    tmpValue = [NSNumber numberWithInt:[items count]];

    return tmpValue;
}

@end

When I walk through the itemCount method it appears to work just fine, but the self.items counts always return zero objects. Any ideas?

+4  A: 

First of all, you're assigning nil to items in your if statement. You want if (items == nil) (or if (!items)). Always use the debugger to step through your code to test your logic when something odd is happening.

Second of all, you can get the count with the keypath, @"@count.items" without the need for your -itemCount method. You could also do self.items.count (because count is a property of the items set as items is a property of self, which is equivalent to [[self items] count]).

Joshua Nozzi
Thanks! I figured it'd be something trivial.
kubi