在我的iOS應用程序中,我使用了多個Core Data實體,並在其中每個實體中存儲了大約50到300個對象。而不是與NSManagedObjects
直接合作,我用自定義類這樣的:始終從核心數據獲取或保留所有對象在內存中?
class Device {
var object: NSManagedObject?
var isFavorite: Bool {
didSet {
object?.setValue(isFavorite, forKey: "isFavorite")
}
}
}
在應用程序中的一些觀點,我只想用對象isFavorite == true
,所以我做的NSFetchRequest
在ViewDidLoad
謂詞。在其他視圖中,我希望所有對象都存儲在實體中,因此我創建了一個新的NSFetchRequest
,但沒有謂詞。
事情是,這是不是很有效率,並導致展示視圖時分裂第二延遲(因爲我在ViewDidLoad
獲取)。對此的一個解決方案是異步獲取,但我想知道是否有更有效的方法。
因爲我總是需要那些相同的2-3個實體,但只是具有不同的謂詞,當應用程序加載時,是否有意義獲取所有實體,將所有對象保留在內存中,並在ViewDidLoad
中循環以刪除那些不需要的這個觀點?目前,我從字面上看每一個視圖(總共10-15),所以從記憶中工作似乎是一個好主意。
有什麼想法?建議非常感謝,謝謝!
感謝您的諮詢!不過,我想知道是否循環遍歷所有對象並刪除未使用的對象是個好主意。這與使用NSPredicate基本相同,但是這不是更耗資源? –
我建議這樣做,因爲在不同的ViewController上一遍又一遍地讀取相同的數據。嘗試以下方法,我非常確定在切換viewControllers時應該解決的滯後問題。 –