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

閱讀時間約 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內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { NSApplication.shared.terminate(self) return
字串交換: let str = "被誰喜歡,又喜歡誰呢?" // 交換 print(str.replacingOccurrences(of: ",又", with: "?")) //被誰喜歡?喜歡誰呢? 字串去首尾: let str = "被誰喜歡,又喜歡誰呢?" // 去首尾 print
int to data: //int to data var num = -12300 let data = Data.init(bytes: &num, count: MemoryLayout.size(ofValue: num)) // bytes : 8 elements //
以底下兩數字為例: let bin1:UInt8 = 0b11111111 //255 let bin2:UInt8 = 0b00001000 //8 向右位移: let shiftRightBin1Result = bin1>>1 print(String(shiftRightBin1R
以底下兩數字為例: let bin1:UInt8 = 0b11111111 //255 let bin2:UInt8 = 0b00001000 //8 and運算 let andResult = bin1 & bin2 print(String(andResult,radix: 2))//
二進制表示方式 let bin1:UInt8 = 0b11111111 //255 let bin2:UInt8 = 0b00001000 //8 八進制表示方式 let otc:UInt8 = 0o377 //255 十六進制表示方式 let hex:UInt8 = 0xff /
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { NSApplication.shared.terminate(self) return
字串交換: let str = "被誰喜歡,又喜歡誰呢?" // 交換 print(str.replacingOccurrences(of: ",又", with: "?")) //被誰喜歡?喜歡誰呢? 字串去首尾: let str = "被誰喜歡,又喜歡誰呢?" // 去首尾 print
int to data: //int to data var num = -12300 let data = Data.init(bytes: &num, count: MemoryLayout.size(ofValue: num)) // bytes : 8 elements //
以底下兩數字為例: let bin1:UInt8 = 0b11111111 //255 let bin2:UInt8 = 0b00001000 //8 向右位移: let shiftRightBin1Result = bin1>>1 print(String(shiftRightBin1R
以底下兩數字為例: let bin1:UInt8 = 0b11111111 //255 let bin2:UInt8 = 0b00001000 //8 and運算 let andResult = bin1 & bin2 print(String(andResult,radix: 2))//
二進制表示方式 let bin1:UInt8 = 0b11111111 //255 let bin2:UInt8 = 0b00001000 //8 八進制表示方式 let otc:UInt8 = 0o377 //255 十六進制表示方式 let hex:UInt8 = 0xff /
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
本文介紹了 Swift 語言中的各種數學運算子,包括基本數學運算子、複合賦值運算子、比較運算子、邏輯運算子和範圍運算子。將提供使用這些運算子的方式及其優先順序規則,讓讀者能輕鬆理解如何在程序中實現數值與邏輯運算,並掌握 Swift 中的運算子使用技巧。
本文章介紹 Swift 語言中變數的建立方法,包括變數與常數的宣告、型別推斷、型別註記以及常見資料型別。本文詳細說明瞭可選型別的意義、變數命名的規則和作用域的概念,幫助讀者更有效地使用 Swift 語言進行程式設計。
使用者回報的超級奇怪線上問題,用數字鍵盤(NumberPad)更改欄位時,送出後尾數都會消失。例如:30 ⭢ 3,52 ⭢ 5。 尋尋覓覓了兩天終於被我找到這篇,apple的奇葩的bug 重現條件 iOS17 手機設定是繁體中文語系 前一個用過的鍵盤是Cangjie倉頡 or Suchen
Emergency lockout solutions provide critical assistance when you find yourself locked out of your home, car, or office. These services are designed to
Thumbnail
本文檔介紹了在Swift中使用套件的詳細方法,包括如何引用第三方套件和自定義模組,如何創建自定義套件,以及一些常見的Swift套件。這些套件可以幫助開發者快速添加功能到項目中,提高開發效率和程式碼品質。
Thumbnail
字數算法 = string.count? 在swift算一個string的字數時候,很直覺的會想到用.count來算 let s = "這是幾個字呢".count print(s.count) // 6 毫無疑問的安心信賴6個字 表情符號的場合 let emoji = "😂" print
Thumbnail
一樣先來看官方文件 A view controller that provides access to documents or destinations outside your app’s sandbox. 其實就是讓你去讀取檔案App的東西 有兩種模式,Don’t copy the do
swift讀書筆記 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/deinitialization/  class instance deallocated前會call deinitia
Thumbnail
swift讀書筆記 Documentation Edit descriptiondocs.swift.org objective-c 的init 會return value,swift 不會。 所有的property都必須在Init()裡面設定初始值,或設定stored property,這種
Thumbnail
其實16也會ㄏㄏ 相關討論: https://developer.apple.com/forums/thread/703145 重現步驟: 在iOS15以上,使用UIActivityViewController執行下列步驟會crash 1. 開啟UIActivityViewControlle
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
本文介紹了 Swift 語言中的各種數學運算子,包括基本數學運算子、複合賦值運算子、比較運算子、邏輯運算子和範圍運算子。將提供使用這些運算子的方式及其優先順序規則,讓讀者能輕鬆理解如何在程序中實現數值與邏輯運算,並掌握 Swift 中的運算子使用技巧。
本文章介紹 Swift 語言中變數的建立方法,包括變數與常數的宣告、型別推斷、型別註記以及常見資料型別。本文詳細說明瞭可選型別的意義、變數命名的規則和作用域的概念,幫助讀者更有效地使用 Swift 語言進行程式設計。
使用者回報的超級奇怪線上問題,用數字鍵盤(NumberPad)更改欄位時,送出後尾數都會消失。例如:30 ⭢ 3,52 ⭢ 5。 尋尋覓覓了兩天終於被我找到這篇,apple的奇葩的bug 重現條件 iOS17 手機設定是繁體中文語系 前一個用過的鍵盤是Cangjie倉頡 or Suchen
Emergency lockout solutions provide critical assistance when you find yourself locked out of your home, car, or office. These services are designed to
Thumbnail
本文檔介紹了在Swift中使用套件的詳細方法,包括如何引用第三方套件和自定義模組,如何創建自定義套件,以及一些常見的Swift套件。這些套件可以幫助開發者快速添加功能到項目中,提高開發效率和程式碼品質。
Thumbnail
字數算法 = string.count? 在swift算一個string的字數時候,很直覺的會想到用.count來算 let s = "這是幾個字呢".count print(s.count) // 6 毫無疑問的安心信賴6個字 表情符號的場合 let emoji = "😂" print
Thumbnail
一樣先來看官方文件 A view controller that provides access to documents or destinations outside your app’s sandbox. 其實就是讓你去讀取檔案App的東西 有兩種模式,Don’t copy the do
swift讀書筆記 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/deinitialization/  class instance deallocated前會call deinitia
Thumbnail
swift讀書筆記 Documentation Edit descriptiondocs.swift.org objective-c 的init 會return value,swift 不會。 所有的property都必須在Init()裡面設定初始值,或設定stored property,這種
Thumbnail
其實16也會ㄏㄏ 相關討論: https://developer.apple.com/forums/thread/703145 重現步驟: 在iOS15以上,使用UIActivityViewController執行下列步驟會crash 1. 開啟UIActivityViewControlle