将@propertys添加到Core Data类

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中是不可见的,并且@propertys编译得很好,但是在运行时我得到了-[MyClass setDownloadErrorCounter:]: unrecognized selector sent to instance.有谁能建议我一些解决方案?

Mar*_*n R 6

最简单的解决方案(如果您不想修改Xcode生成的类文件)是将属性添加到Core Data模型并将属性定义为瞬态.瞬态属性不会保存到商店文件中.

另一种选择是使用像"mogenerator"这样的工具,它为每个实体生成两个类文件,一个用于Core Data属性(如果模型更改则会覆盖),另一个用于自定义属性(不会被覆盖) .

更新:Xcode 7开始,Xcode为每个托管对象子类创建一个类和一个类别,比较类别中的NSManagedObject子类属性.可以将自定义属性添加到类定义中,该类定义在模型更改时不会被覆盖.