ios/objective-c/core-data:如何在 NSManagedObject 中将关系显示为 属性

ios/objective-c/core-data: How to show relationship as property in NSManagedObjects

我有两个实体,并且刚刚在它们之间创建了 1:1 关系。实体有子类,但此时它们中有很多代码,所以我不想使用 Xcode 自动生成新的 NSManagedObject 子类。

相反,我认为我可以在每个关系中引用 属性 的关系。我这样做了,它似乎工作了一段时间,但现在它抛出了神秘的错误,我似乎无法摆脱它们。我已经导入了每一个的倒数,但它没有帮助。谁能推荐我应该做什么?非常感谢。

Subclassed NSManagedObjects (simplified)

//Items.h
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "Notes.h"

@interface Items : NSManagedObject
@property (nonatomic, retain) NSNumber *iid;
@property (nonatomic, retain) NSString *item;

//this is relationship
@property (nonatomic, retain) Notes *note;
//above throws error Unkown Type Name 'Notes'
@end

//Notes.h
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "Items.h"

@interface Notes : NSManagedObject
@property (nonatomic, retain) NSNumber * nid;
@property (nonatomic, retain) NSString * note;

//this is relationship
@property (nonatomic, retain) Items *item;
//above throws error Unkown Type Name 'Item'
@end

这类似于关系

在 Objective-C 中,您不能在声明类型之前使用它。要解决此问题,您可以通过将这些行放在 #import 语句下方和第一个 @interface.

上方来使用 类 的前向声明
@class Items;
@class Notes;

如果您发布的代码不能代表您的实际文件结构(我假设不是),您必须将 Items@class 语句放在 Notes.h 文件和 Items.h 文件中 Notes@class 语句。