[swift]Core Data新增、更新、查詢、刪除

小黑-avatar-img
發佈於前端(Web & APP) 個房間
更新 發佈閱讀 9 分鐘

用來操作 Core Data 的常數

private let coreDataContext = (NSApplication.shared.delegate
as! AppDelegate).persistentContainer.viewContext


取的資料數量:

func getCount() -> Int {
do{
let result = try coreDataContext.fetch(Member.fetchRequest())
for data in result as! [Member] {
if let name = data.value(forKey: "name") as? String {
print(name)
}
}
return result.count
}catch let error as NSError{
print("getCount->\(error)")
}
return 0
}


刪除:

    
func getCount() -> Int {
do{
let result = try coreDataContext.fetch(Member.fetchRequest())
for data in result as! [Member] {
if let name = data.value(forKey: "name") as? String {
print(name)
}

}
return result.count
}catch let error as NSError{
print("getCount->\(error)")
}
return 0
}

func deleteCoreData(name:String="") -> Bool {
let request : NSFetchRequest = Member.fetchRequest()
if name=="" {
return false
}

request.predicate = NSPredicate(format: "name = %@",name)

do{
let result = try coreDataContext.fetch(request)
for data in result {
coreDataContext.delete(data)
}
try coreDataContext.save()
return true
}catch let error as NSError{
print("read->\(error)")
return false
}
}


新增:

func writeCoreData(name:String) -> Bool {
let memberEntity = Member(context: coreDataContext)
memberEntity.id = NSDecimalNumber.init(value: getCount()+1)
memberEntity.name = name
memberEntity.createdate = Int(NSDate().timeIntervalSince1970).description

do{
try coreDataContext.save()
return true
}catch let error as NSError{
print("read->\(error)")
return false
}

}


更新:

func updateCoreData(oldName:String="",newName:String="") -> Bool {
let request : NSFetchRequest = Member.fetchRequest()
if oldName=="" || newName==""{
return false
}
// request.predicate = nil
request.predicate = NSPredicate(format: "name = %@",oldName)

do{
let result = try coreDataContext.fetch(request)
for data in result {
data.name = newName
data.createdate = Int(NSDate().timeIntervalSince1970).description
}
try coreDataContext.save()
return true
}catch let error as NSError{
print("read->\(error)")
return false
}
}


查詢:

func readCoreData(name:String) -> Array<Any> {
let request : NSFetchRequest = Member.fetchRequest()
//CONTAINS:查詢特定內容的資料
request.predicate = NSPredicate(format: "name CONTAINS %@ ",name)

//BEGINSWITH:查詢特定開頭的資料
request.predicate = NSPredicate(format: "name BEGINSWITH %@ ",name)

//ENDSWITH:查詢特定結尾的資料
request.predicate = NSPredicate(format: "name ENDSWITH %@ ",name)

//like:查詢特定結尾的資料(以星號的位置決定)
request.predicate = NSPredicate(format: "name like %@ ","*"+name)

//like:查詢特定開頭的資料
request.predicate = NSPredicate(format: "name like %@ ",name+"*")

//=:查詢內容要跟資料完全一樣
request.predicate = NSPredicate(format: "name = %@ ",name)

var arr = Array<Any>()

do{
let result = try coreDataContext.fetch(request)
for data in result {
let dic = NSMutableDictionary()

if let name = data.value(forKey: "name") as? String {
dic.setObject(name, forKey: "name" as NSCopying)
dic.setObject(data.value(forKey: "createdate") as! String, forKey: "createdate" as NSCopying)
dic.setObject(data.value(forKey: "id") as! NSDecimalNumber, forKey: "id" as NSCopying)
// print(name)
}
arr.append(dic)
}
}catch let error as NSError{
print("read->\(error)")
}
return arr
}
留言
avatar-img
小黑與程式的邂逅
8會員
123內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
2024/09/22
JSON-RPC是一種設計簡單、無狀態、輕量級的遠端程序呼叫(RPC)協議。
2024/09/22
JSON-RPC是一種設計簡單、無狀態、輕量級的遠端程序呼叫(RPC)協議。
2024/09/22
CryptoSwift提供多種標準的加密演算法,並支援字串與資料之間的轉換。
2024/09/22
CryptoSwift提供多種標準的加密演算法,並支援字串與資料之間的轉換。
2024/09/21
APIKit是一種輕量級且類型安全的網路抽象層,將請求與響應類型進行關聯。這篇文章介紹了APIKit的基本概念,包括Request和Session的功能,以及如何定義請求和返回結果的類型,幫助開發者更高效地處理HTTP/HTTPS請求。理解這些基本組件,將使您在建構網路請求時更加得心應手。
Thumbnail
2024/09/21
APIKit是一種輕量級且類型安全的網路抽象層,將請求與響應類型進行關聯。這篇文章介紹了APIKit的基本概念,包括Request和Session的功能,以及如何定義請求和返回結果的類型,幫助開發者更高效地處理HTTP/HTTPS請求。理解這些基本組件,將使您在建構網路請求時更加得心應手。
Thumbnail
看更多
你可能也想看
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
本文檔介紹了在Swift中使用套件的詳細方法,包括如何引用第三方套件和自定義模組,如何創建自定義套件,以及一些常見的Swift套件。這些套件可以幫助開發者快速添加功能到項目中,提高開發效率和程式碼品質。
Thumbnail
本文檔介紹了在Swift中使用套件的詳細方法,包括如何引用第三方套件和自定義模組,如何創建自定義套件,以及一些常見的Swift套件。這些套件可以幫助開發者快速添加功能到項目中,提高開發效率和程式碼品質。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
此章節旨在解釋Swift語言中函數的基本結構和操作方式,包括函數的聲明、呼叫、參數和返回值。閱讀這個章節可以幫助你理解並掌握如何在Swift編程中有效地使用和管理函數。
Thumbnail
此章節旨在解釋Swift語言中函數的基本結構和操作方式,包括函數的聲明、呼叫、參數和返回值。閱讀這個章節可以幫助你理解並掌握如何在Swift編程中有效地使用和管理函數。
Thumbnail
本章節介紹了如何建立並設置Swift項目以及如何選擇和設置Swift代碼編輯器。這包括在Xcode和命令行中建立Swift項目,選擇Xcode、Visual Studio Code或AppCode作為編輯器,以及如何使用SPM安裝插件。
Thumbnail
本章節介紹了如何建立並設置Swift項目以及如何選擇和設置Swift代碼編輯器。這包括在Xcode和命令行中建立Swift項目,選擇Xcode、Visual Studio Code或AppCode作為編輯器,以及如何使用SPM安裝插件。
Thumbnail
本章節旨在為讀者提供Swift程式語言的基礎知識,包括其基本語法、註解方法和變數使用方式,並通過具體的程式碼示例來說明這些概念。這將幫助讀者理解Swift的基本結構,並學會如何在Swift中定義變數並使用註解。
Thumbnail
本章節旨在為讀者提供Swift程式語言的基礎知識,包括其基本語法、註解方法和變數使用方式,並通過具體的程式碼示例來說明這些概念。這將幫助讀者理解Swift的基本結構,並學會如何在Swift中定義變數並使用註解。
Thumbnail
這份文件的目的是介紹Swift語言,包括它的特性、應用範疇,以及誰在使用它。它也提供了一些學習Swift的資源和工具,以及一些常見的Swift庫和框架。
Thumbnail
這份文件的目的是介紹Swift語言,包括它的特性、應用範疇,以及誰在使用它。它也提供了一些學習Swift的資源和工具,以及一些常見的Swift庫和框架。
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News