我創建了自己的類,我想核心數據,而不是使用NSManagedObject
:我如何使所有核心數據對象從我的類而不是NSManagedObject繼承?
@interface MyManagedObject: NSManagedObject {
id delegate;
}
我不能用一個類別,因爲這個聲明伊娃。我所有的Core Data對象都使用具體的類而不是NSManagedObject
的實例。我使用代碼生成器來生成這些文件。這裏是一個什麼樣的Contact
對象可能看起來像一個例子:
@interface Contact: NSManagedObject {
}
我知道我可以手動更改NSManagedObject
到MyManagedObject
這個生成的代碼,但我需要這個我重新生成代碼都必須這樣做。有沒有辦法讓它自動使用我自己的類?
此外,在任何解決方案中的#import
可能是一個問題。理想情況下,我希望它使用@class MyManagedObject
而不是#import "MyManagedObject.h"
,因爲MyManagedObject.h
位於庫中,並且標頭需要可訪問的文件夾前綴(例如#import "MyLib/MyManagedObject.h"
)。
我試圖在.xcdatamodel
文件具有相同的名稱創建一個虛擬對象,並指定所有對象繼承它,但有兩個問題。首先是它使用#import "MyManagedObject.h"
,由於我上面指定的原因,它找不到。第二個問題是,我不確定將Core Data愚弄到認爲類是從另一個Core Data對象繼承的是一個好主意......即使我沒有生成代碼文件。我猜Core Data可能會在幕後做一些不必要的事情,因爲它認爲有一個額外的類是我的類繼承的。
我想我可以使用另一層類來解決第一個問題。例如,我將指定對象從MyProjectManagedObject
繼承和在我的項目創建一個MyProjectManagedObject.h
文件:
#import "MyLib/MyManagedObject.h"
@interface MyProjectManagedObject: MyManagedObject {
}
...現在我的自動生成的文件看起來像這樣:
#import "MyProjectManagedObject.h"
@interface Contact: MyProjectManagedObject {
}
。 ..將工作。唯一的問題是我上面提到的第二個關於在Core Data幕後運行的額外代碼。這是有些擔心或應該忽略嗎?有沒有其他方法可以解決上述兩個問題?
如果您使用' - -base MyManagedObject'命令行參數。 – Senseful 2010-08-25 06:47:34