參考代碼
實體闺骚、屬性蒋腮、關(guān)系
- Entity(實體)是CoreData中的類定義称近。典型的例子是雇員或公司夹界。在關(guān)系數(shù)據(jù)庫中冀惭,實體對應(yīng)于一個表染坯。
- Attribute(屬性)是附加到特定實體的一條信息碌上。例如倚评,一個Employee實體可以具有該雇員的姓名浦徊,職位和薪水的屬性。在數(shù)據(jù)庫中天梧,屬性對應(yīng)于表中的特定字段盔性。
- Relationship(關(guān)系)是多個實體之間的鏈接。在CoreData中呢岗,兩個實體之間的關(guān)系稱為一對一關(guān)系冕香,而一個和許多實體之間的關(guān)系稱為一對多關(guān)系。例如后豫,經(jīng)理可以與一組雇員建立一對多關(guān)系悉尾,而單個雇員通常與他的經(jīng)理具有一對一關(guān)系。
存儲挫酿、讀取构眯、更新、刪除
NSManagedObject
表示存儲在CoereData中的單個對象饭豹;您必須使用它來創(chuàng)建鸵赖,編輯,保存和從Core Data持久性存儲中刪除拄衰。稍后您將看到它褪,NSManagedObject是一種變形器。它可以采用數(shù)據(jù)模型中任何實體的形式翘悉。
1茫打、 存儲NSManagedObject
var items: [NSManagedObject] = []
2、讀取NSmanagedObject數(shù)據(jù)
通過NSManagedObject妖混,您可以使用Key-Value來設(shè)置name屬性老赤。您必須完全按照數(shù)據(jù)模型中顯示的方式拼寫Key,否則制市,您的應(yīng)用程序?qū)⒃谶\行時崩潰抬旺。
note.value(forKeyPath: "name") as? String
NSManagedObjectContext
在從CoreData存儲中保存或檢索任何內(nèi)容之前,首先需要使用NSManagedObjectContext祥楣。您可以將托管對象上下文視為用于處理托管對象的內(nèi)存“便簽本”开财。
考慮將新的managed object保存到Core Data的過程分為兩個步驟:首先,將新的managed object插入managed object context误褪;一旦感到滿意责鳍,就可以“提交”managed object contenxt中的更改以將其保存到磁盤.
Xcode已經(jīng)生成了一個managed object context,作為新項目模板的一部分兽间。請記住历葛,只有在開始時選中“Use Core Data”復(fù)選框,才會發(fā)生這種情況嘀略。此默認managed object context作為應(yīng)用程序委托中NSPersistentContainer的屬性存在恤溶。要訪問它乓诽,您首先需要獲得對應(yīng)用程序委托的引用。
NSEntityDescription
NSManagedObject被稱為變形體问裕,因為它可以表示任何實體。NSEntityDescription是在運行時將數(shù)據(jù)模型中的實體定義與NSManagedObject實例鏈接的部分孵坚。
技術(shù)交流
NSFetchRequest
顧名思義,NSFetchRequest是負責從Core Data獲取數(shù)據(jù)的類窥淆。提取請求既強大又靈活卖宠。您可以使用獲取請求來獲取一組滿足所提供條件的對象.
1、讀取全部數(shù)據(jù)
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Note")
2忧饭、過濾內(nèi)容
let request: NSFetchRequest<Note> = User.fetchRequest()
request.predicate = NSPredicate(format: "name == %@", name)
do {
orders = try self.moc.fetch(request)
} catch let error as NSError {
print(error)
}
設(shè)置獲取請求的實體屬性扛伍,使用init(entityName :)對其進行初始化,將獲取特定實體的所有對象词裤。這是您在此處獲取所有Note實體的操作刺洒。另請注意,NSFetchRequest是通用類型吼砂。泛型的使用指定了獲取請求的預(yù)期返回類型逆航,在本例中為NSManagedObject。
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Note")
我們可以通過制作fetch函數(shù)來為了簡化調(diào)用渔肩。
func fetch(){
}
QQ:3365059189
SwiftUI技術(shù)交流QQ群:518696470
- 請關(guān)注我的專欄icloudend, SwiftUI教程與源碼