我對iOS開發人員來說很新,而且我在覈心數據獲取請求方面遇到了一些問題。我正在使用Xcode 9-beta和swift 4.我每次更新數據庫時,都會用一個提取請求加載新數據,進行一些計算並填充表視圖。核心數據獲取請求的問題
我的挑戰是每次我爲一個實體執行一個獲取請求時,即使它發生了變化,我也會得到相同的數據。在我看來,重複使用來自先前獲取請求的數據,因爲如果我關閉應用並再次打開它,它會向我顯示新存儲的數據。
這裏是我的代碼:
if let context = container?.viewContext {
context.perform {
let request: NSFetchRequest<EntityName> = EntityName.fetchRequest()
let data = try? context.fetch(request)
self.data = data!
self.setUI()
}
}
我得到的容器中:
let container: NSPersistentContainer? = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer
我給一些通用的名字,因爲我認爲這是無關緊要的問題。
有什麼想法?
感謝, JL
您是否收到任何錯誤或輸出到控制檯? – Scriptable
訪存請求永遠不會被重用。也許你在更改數據後忘記了保存上下文。 Btw:持久化容器和託管對象上下文應該是非可選的,AppDelegate是強制的,否則應用程序將不會啓動。強迫解開對象並不是邪惡的:'let container =(UIApplication.shared.delegate as!AppDelegate).persistentContainer' – vadian
我沒有收到任何錯誤到控制檯。每次更改數據時我都會保存上下文。 –