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

时间:2015-10-02 17:51:32

标签: ios objective-c relationship nsmanagedobject

我有两个实体,刚刚在它们之间建立了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

这类似于关系

enter image description here

1 个答案:

答案 0 :(得分:1)

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

@class Items;
@class Notes;

如果您发布的代码不能代表您的实际文件结构(我认为它不是),那么您必须将@class Items语句放入@class Notes.h文件和Items.h文件中Notes的{​​{1}}语句。