访问NSManagedObject中的关系对象时出现问题

时间:2009-12-31 19:20:35

标签: objective-c cocoa core-data

我的托管对象有一个名为items的关系。我的子类有一个名为itemCount的方法。不幸的是,我在 items 关系中获取对象计数的尝试总是返回0.以下是相关代码:

@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

当我浏览itemCount方法时,它似乎工作正常,但self.items计数总是返回零对象。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

首先,您要在nil声明中为items分配if。您想要if (items == nil)(或if (!items))。当奇怪的事情发生时,总是使用调试器逐步执行代码来测试逻辑。

其次,您可以使用密钥路径@"@count.items"获取计数,而无需使用-itemCount方法。您也可以执行self.items.count(因为countitems集的属性,因为items属性为self,相当于{{1} }})。