91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

FetchedResultsController與Core Data

發布時間:2020-09-14 09:15:11 來源:網絡 閱讀:666 作者:shskey 欄目:移動開發

NSFetchedResultsController是為了讓視圖及時響應Model層的變化而設計的,更具體的將是配合刷新UITableView上的數據。


一般而言,NSFetchedResultsController的實例是由UITableViewController的實例初始化并持有。

創建后,我們將給它分配一個代理(NSFetchedResultsControllerDelegate),當Core Data中的model有變化時,通過代理通知到對應的tableView。


  1. 對象的新增:新增的對象無法關聯到fetchedResultsController,一般是通過 [NSEntityDescription insertNewObjectForEntityForName:@"Post" inManagedObjectContext:managedObjectContext]的方式初始化并賦值,并保存( [managedObjectContext save:&error]),此處采用的是一致的managedObjectContext,會觸發NSFetchedResultsChangeInsert通知。

  2. 對象的更新:在某些需求中,對象可能是后臺異步得到json數據,然后同步進數據庫中的。直接對該對象更新,并保存( [managedObjectContext save:&error])。

  3. 對象的刪除:通過在一致的managedObjectContext上刪除對應的model對象,會觸發NSFetchedResultsChangeDelete通知。并且會將其相關的cascade關系的對象一起刪除,無需單獨操作。 [post.managedObjectContext deleteObject:post];

官方推薦的方式,是盡量在代理的didChangeObject方法中處理tableView上對section或者row的更新。不管對對象的操作是通過NSArray還是NSFetchedResultsController來獲取,亦或是通過insertNewObjectForEntityForName方法去新增,只要是在綁定到代理上的那個controller對象所包含的結果集內的對象有變化,都會觸發代理中的didChangeObject方法。


對于對象相關的關系對象變化,比如post對象有個owner對象關系,owner發生了變化,如果會影響結果集,同樣會觸發post的didChangeObject方法,反之則不會。

遇到最多的問題是相關的model有了更新,并在上下文保存了,但關聯的代理的didChangeObject方法中沒有被觸發,總結了一下,原因主要有幾個:

1. managedObejctContext不一致

2. 分析下fetch到controller對應的predicate是否包含受影響的該model,并檢查由于該model的相關屬性變化后,它對應在結果集中是新增/更新/刪除操作,那么在didChangeObject中就會觸發到相應的NSFetchedResultsChange

3. 當前返回的controller的delegate是否綁定到對應的代理上了

相關資料:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁门县| 克拉玛依市| 厦门市| 阜宁县| 延吉市| 潼南县| 汶上县| 普陀区| 民勤县| 信阳市| SHOW| 铜鼓县| 河东区| 广德县| 古交市| 长沙市| 盐津县| 隆林| 象山县| 渭南市| 乌拉特后旗| 三亚市| 金塔县| 四子王旗| 靖安县| 临沭县| 福鼎市| 宁波市| 富阳市| 兴安盟| 阳原县| 镇坪县| 兰考县| 定襄县| 甘孜县| 巩义市| 精河县| 信丰县| 务川| 卓资县| 驻马店市|