當我使用核心數據來定義我的模型時,我遇到了一些困難。核心數據替代
1.無法即時創建對象。
我希望能夠創建一個像下面這樣的對象,並繼續爲其屬性添加值。
let action = Action()
action.desc = "hello"
但是,如果你正在使用的核心數據模型類,你不能這樣做,因爲你會得到無法呼籲NSManagedObject類指定初始化錯誤。您必須使用initWithEntity:insertIntoManagedObjectContext:
和全部創建一個新對象。
2.不能將類類型用作函數中的返回類型。
當使用核心數據時,我保留一個單獨的文件來放置所有的抓取/保存方法。其中,我有一種方法用於將所有Action
對象作爲數組檢索。
public func loadActions() -> [Action] {
let fetchRequest = NSFetchRequest()
let entityDescription = NSEntityDescription.entityForName("Action", inManagedObjectContext: managedObjectContext!)
fetchRequest.entity = entityDescription
var error: NSError?
let result = managedObjectContext?.executeFetchRequest(fetchRequest, error: &error)
return result!
}
我不能使用類型Action
創建一個類型數組,因爲我得到的錯誤方法不能被聲明爲public,因爲它的結果是採用內部類。所以我必須將數組作爲AnyObject
s的數組,然後在需要使用它們時將它們轉換爲Action
。
3.班內不能有方法。
我知道你可以在Objective-C中創建類別,並將其中的所有方法。我猜Swift中的等價物是擴展(?)。但如果你能在同一個地方完成課程和方法,那將會很好。
假設我採用OO道路,並以正常方式創建我的整個模型,這帶來了我的問題。如何以及在哪裏可以保存這些對象?