【问题标题】:iOS - Property not found on object of type X - inherited propertyiOS - 在 X 类型的对象上找不到属性 - 继承的属性
【发布时间】: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


    【解决方案1】:

    好吧,我已经解决了这个问题,但我想我会把它留在这里,以防其他人有类似的情况。

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

    原来在磁盘上的项目子目录中有旧的 ZSProduction.h 和 ZSProduction.m 文件 - 但在 XCode 中没有。似乎 XCode 正在查看这些。旧文件位于项目的根目录中,而新文件位于子目录(称为“模型”)中。我删除了旧文件,重新启动了 XCode,现在一切都变成了tickety-boo。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2019-06-25
      • 2021-06-30
      相关资源
      最近更新 更多