【发布时间】:2014-04-09 14:14:56
【问题描述】:
我有一个基于 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
子类化的原因是我可能会添加一堆方法和可能的其他属性。这样,如果我对实体进行更改,我可以写出一个新的 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”
请注意,它不会抱怨 productionName 属性,它工作正常。
在同一个视图控制器中,如果我使用:
self.item.shotNumberingStyle = 0;
然后我得到同样的错误。但如果我使用:
[self.item setValue:0 forKey:@"shotNumberingStyle"];
然后它工作正常。但我可以使用:
self.item.highlightColour = [UIColor whiteColor];
完全没有问题。什么给了?
任何线索将不胜感激。
【问题讨论】:
标签: ios objective-c core-data