iOS - 在类型X的对象上找不到的属性 - 继承的属性

时间:2014-04-09 14:14:56

标签: ios objective-c core-data

我有一个基于CoreData的应用程序。在Core Data中,我有一个名为ZSProduction的实体,它创建一个名为ZSProductionCD的NSManagedObject子类。这是创建的.h文件。

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@interface ZSProductionCD : NSManagedObject

@property (nonatomic, retain) NSNumber * appVersion;
@property (nonatomic, retain) id highlightColour;
@property (nonatomic, retain) NSDate * lastUpdated;
@property (nonatomic, retain) NSString * notes;
@property (nonatomic, retain) NSString * owner;
@property (nonatomic, retain) NSString * productionID;
@property (nonatomic, retain) NSString * productionName;
@property (nonatomic, retain) NSNumber * scenesLocked;
@property (nonatomic, retain) NSNumber * shotNumberingStyle;
@property (nonatomic, retain) NSNumber * sortIndex;
@property (nonatomic, retain) NSNumber * status;
@property (nonatomic, retain) NSString * tagline;

@end

然后我用一个名为ZSProduction的类继承它:

#import <Foundation/Foundation.h>
#import "ZSProductionCD.h"

@interface ZSProduction : ZSProductionCD
@end

子类化的原因是我可能会添加一堆方法&amp;可能还有其他属性这样,如果我对实体进行了更改,我可以写出一个新的ZSProductionCD类,而不会影响我对ZSProduction所做的操作。

现在问题就在于此。我在视图控制器中使用ZSProduction。但我只对其中一个属性有问题。

在此视图控制器中,我声明了一个属性:

#import "ZSProduction.h"

@interface [...]
@property (strong, nonatomic) ZSProduction *item;
@end

然后,在一个方法中:

self.productionNameField.text = self.item.productionName;
self.shotNumStyleControl.selectedSegmentIndex = [self.item.shotNumberingStyle intValue];

这就是出错的地方。 XCode抱怨:

在'ZSProduction *'

类型的对象上找不到属性'shotNumberingStyle'

请注意,它没有抱怨有关genName属性,这可以正常工作。

在同一个视图控制器中,如果我使用:

self.item.shotNumberingStyle = 0;

然后我得到同样的错误。但如果我使用:

[self.item setValue:0 forKey:@"shotNumberingStyle"];

然后它工作正常。但我可以使用:

self.item.highlightColour = [UIColor whiteColor]; 

完全没有问题。是什么给了什么?

任何线索都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

好吧,我对这个问题进行了排序,但我想我会把它留在这里以防万一其他人有类似的东西。

我意识到正在继承的三个属性没问题,并且可以访问,我在ZSProduction类的早期版本中创建了一个 - 没有使用Core Data的一个(我目前正在重构移动)从档案到CD)。

原来,在磁盘上,项目子目录中有旧的ZSProduction.h和ZSProduction.m文件 - 但在XCode中没有。似乎XCode正在研究这些。旧文件位于项目的根目录中,而较新的文件位于子目录中(称为“模型”)。我删除了旧文件,重新启动了XCode&amp;现在一切都是嘀嗒声。