我有一个基于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];
完全没有问题。是什么给了什么?
任何线索都会受到赞赏。
答案 0 :(得分:0)
好吧,我对这个问题进行了排序,但我想我会把它留在这里以防万一其他人有类似的东西。
我意识到正在继承的三个属性没问题,并且可以访问,我在ZSProduction类的早期版本中创建了一个 - 没有使用Core Data的一个(我目前正在重构移动)从档案到CD)。
原来,在磁盘上,项目子目录中有旧的ZSProduction.h和ZSProduction.m文件 - 但在XCode中没有。似乎XCode正在研究这些。旧文件位于项目的根目录中,而较新的文件位于子目录中(称为“模型”)。我删除了旧文件,重新启动了XCode&amp;现在一切都是嘀嗒声。