2011-12-24 89 views
3

我剛剛開始使用核心數據。我有大約40-50個屬性的實體。鑑於我有一個表示屬性名稱的字符串數組(這些屬性的類型都是字符串),有沒有一種方法可以通過編程方式設置數組中的屬性?還是必須手動將這些屬性粘貼到Xcode IDE中?核心數據以編程方式向條目添加屬性

感謝

回答

0

雖然與SQLite的數據存儲不會幫你擺弄,有一個描述你的項目文件夾裏面的數據模型文件。該文件位於xml格式中,因此您可以遍歷數組並在該文件中生成必要的條目。然後,您可以覆蓋默認文件並在Xcode中重新打開您的項目。如果幸運的話,你的所有實體和屬性都會在那裏。

爲了讓你開始讓我指點你的文件。如果你剛開始一個新的項目,包括默認的核心數據模型,它應該在

<project directory>/<project name>/project_name.xcdatamodeld/project_name.xcdatamodel 

位於默認看起來是這樣的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<model name="Test1.xcdatamodel" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="11A491" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic"> 
    <entity name="Event"> 
     <attribute name="timeStamp" optional="YES" attributeType="Date"/> 
    </entity> 
    <elements> 
     <element name="Event" positionX="261" positionY="189" width="128" height="60"/> 
    </elements> 
</model> 

希望這有助於。

+1

這完全不受Apple的支持。請不要使用這個。 – 2012-02-13 09:50:07

+1

只是爲了重複Daniel的評論。請不要這樣做。 Apple在運行時爲修改託管對象模型提供了完全可用的API(有關更多信息,請參閱NSManagedObjectModel API文檔)。不要亂用x​​cdatamodel文件 - 它的目的是支持Xcode模型編輯器,而不是*記錄或支持。 – 2012-09-04 12:31:54

10

您可以以編程方式創建模型。 Xcode IDE對於大多數人來說是最簡單的。

創建模型

NSManagedObjectModel *mom = [[[NSManagedObjectModel alloc] init] autorelease]; 

然後用

NSMutableArray *entities = [NSMutableArray array]; 
NSEntityDescription *event = [[[NSEntityDescription alloc] init] autorelease]; 
[entities addObject:event]; 
[event setName:@"Event"]; 
[event setProperties:eventProperties]; 
... 

然後創建實體的實體添加到模型:

[mom setEntities:entities]; 

請注意,你不能改變的模型,一旦你使用它的商店/上下文。

一旦你創建了你的模型,你可以使用NSCoding保存它。

這也顯示在Core Data Utility Tutorial

相關問題