2016-07-23 96 views
1

我閱讀了一些CoreData教程和Apple的文檔,但我仍然沒有發現一件事:如何將CoreData與自定義類完全集成。調整自定義類以便與CoreData兼容

假設我有自定義類Dog,並且在創建項目時選中了「Include CoreData」。

的狗有像namelegsNumber幾個屬性和一些枚舉像vaccinationStatus與案件.Vaccinated.NotVaccinated

從我所瞭解的唯一方法是創建一個新文件並修改代碼。我必須創建一個NSManagedObject子類並將其分配給.xdatamodeld文件中的實體(本例中爲Dog)。然後它創建2個文件Dog+CoreDataProperties.swiftDog.swift

而且我應該在Dog+CoreDataProperties.swift中添加我想讓狗擁有的屬性,例如@NSManaged var name: StringlegsNumber,但是枚舉呢?

它是這樣嗎?

@NSManaged enum VaccinationStatus { 
    case Vaccinated 
    case NotVaccinated 
    } 

我可以在其中添加另一個具有屬性的類嗎?就像一個陣列一樣,說每個狗的衣服的品牌名稱和價格(有點兒極端,但你明白我的意思)。或者是否必須添加另一個實體並創建另一個NSManagedObject文件並將NSManaged的屬性添加到它?

回答

1

通常你會創建模型,在那裏添加你所有的屬性,然後Xcode會爲你生成代碼。對於你的枚舉,我會在模型中使用整數或布爾類型(取決於枚舉的類型)。

現在,在Xcode生成的類中,您可以添加額外的函數來暴露實體的數據,並允許以任何您想要的方式突變數據 - 只要確保調用Xcode爲您生成的setters和getters 。

所以在那個類中你將定義你的枚舉,並添加函數來設置和獲取枚舉,並且將提供的枚舉轉換爲boil並將其存儲在實體中。您可以使用枚舉的原始值來提供幫助。

你還需要考慮如何以及何時保存...

+0

你能提供一些代碼嗎?我一直在研究,但我仍然沒有找到我想要的。假設我擁有屬性'name'和'dateOfBirth'(String和Date)的實體'EmployeeEntity'。每個員工都可以完成任務。所以這應該是另一個具有屬性'taskName'和'taskStatusValue'的實體'TaskEntity'?並且將'tasks'作爲'EmployeeEntity'和'employee'的關係添加到'TaskEntity'?然後我應該爲兩個實體創建文件?我基本上想要最終的結果是我訪問'employee.task [0] .status'。上面的邏輯正確嗎? – Lawrence413

+0

然後,如果我添加本教程中的代碼(在枚舉部分)http://www.jessesquires.com/better-coredata-models-in-swift/在Task.swift中,我將能夠訪問'employee.task [0] .status'? – Lawrence413

+0

是的,你的邏輯聽起來不錯。我沒有時間看看你參考的教程 – Wain

相關問題