Val*_*din 1 core-data objective-c ios
我通过Core Data做了几节课.我需要@property
在运行时为其中一个类添加一些额外的s.这@property
是负责下载进度的,我不想将它们存储在Core Data DB中.我试图使用一个单独的扩展类:
@interface MyClass ()
{
CGFloat _downloadProgress;
NSInteger _downloadErrorCounter;
BOOL _downloadAllStuff;
BOOL _downloadUserCanceled;
}
@property (nonatomic, assign) CGFloat downloadProgress;
@property (nonatomic, assign) NSInteger downloadErrorCounter;
@property (nonatomic, assign) BOOL downloadAllStuff;
@property (nonatomic, assign) BOOL downloadUserCanceled;
@end
Run Code Online (Sandbox Code Playgroud)
但私有变量在MyClass中是不可见的,并且@property
s编译得很好,但是在运行时我得到了-[MyClass setDownloadErrorCounter:]: unrecognized selector sent to instance
.有谁能建议我一些解决方案?
最简单的解决方案(如果您不想修改Xcode生成的类文件)是将属性添加到Core Data模型并将属性定义为瞬态.瞬态属性不会保存到商店文件中.
另一种选择是使用像"mogenerator"这样的工具,它为每个实体生成两个类文件,一个用于Core Data属性(如果模型更改则会覆盖),另一个用于自定义属性(不会被覆盖) .
更新:从Xcode 7开始,Xcode为每个托管对象子类创建一个类和一个类别,比较类别中的NSManagedObject子类属性.可以将自定义属性添加到类定义中,该类定义在模型更改时不会被覆盖.
归档时间: |
|
查看次数: |
1224 次 |
最近记录: |