我的托管对象具有称为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计数始终返回零对象。有任何想法吗?

最佳答案

首先,您要在nil语句中将items分配给if。您需要if (items == nil)(或if (!items))。当发生奇怪的事情时,请始终使用调试器来逐步执行代码以测试逻辑。

第二,您可以使用键路径@"@count.items"来获取计数,而无需使用-itemCount方法。您也可以执行self.items.count(因为countitems的属性,因为itemsself的属性,它等效于[[self items] count])。

关于objective-c - 访问NSManagedObject中的关系对象时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1986760/

10-14 21:03