2011-06-09 64 views

回答

3

首先,它不是一個SQL列,它是一個實體的屬性。屬性具有行爲,但SQL中的列不具有行爲。

在回答你的問題時,一旦使用數據模型模型將數據寫入持久性存儲文件(sqlite存儲或其他格式),它就不能以編程方式進行更改。如果更改屬性,則需要執行版本遷移。

詳情請參閱:Core Data Model Versioning and Data Migration Programming Guide

有點一般的建議:核心數據不是SQL。實體不是表格。對象不是行。屬性不是列。關係不是連接。核心數據是一個對象圖管理系統,它可能會或可能不會持久化對象圖,並且可能會或可能不會在後臺使用SQL來做到這一點。試圖用SQL語言來思考覈心數據會導致你完全誤解核心數據,並導致很多悲傷和浪費時間。

2

您可以操作NSManagedObjectModel中實體的屬性(包括)類型,直到它用於初始化持久存儲協調器。因此,創建NSManagedObjectModel,修改屬性(不是列)類型,然後像往常一樣設置核心數據堆棧。

當然,如果您已經使用原始模型保存了任何數據,則必須執行schema migration以將數據更新爲新類型。