MagicRecord For IOS API深层解析
生活随笔
收集整理的這篇文章主要介紹了
MagicRecord For IOS API深层解析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、NSManagedObjectContext創(chuàng)建和獲取
1.默認(rèn)上下文(每種只存在一個(gè))
(1)MR_rootSavingContext:此方法返回的上下文類型為NSPrivateQueueConcurrencyType(后臺線程),直接關(guān)聯(lián)持久化協(xié)調(diào)器,對此上下文對象執(zhí)行保存方法,會將所有關(guān)聯(lián)到此上下文的子上下文內(nèi)容保存的數(shù)據(jù)庫文件。
(2)MR_defaultContext:此方法返回的上下文類型為NSMainQueueConcurrencyType(主線程),此上下文會關(guān)聯(lián)到MR_rootSavingContext,作為MR_rootSavingContext的子上下文。當(dāng)此上下文會回調(diào)主線程時(shí),請不要調(diào)用此上下文去保存數(shù)據(jù)。
(3)MR_resetDefaultContext:重置MR_defaultContext。
2.創(chuàng)建上下文
(1)MR_context:此方法創(chuàng)建一個(gè)NSPrivateQueueConcurrencyType類型的上下文,作為MR_rootSavingContext的子上下文。
(2)MR_contextWithParent:此方法創(chuàng)建一個(gè)NSPrivateQueueConcurrencyType類型的上下文,父上下文自己指定。沒有指定持久化協(xié)調(diào)器。
(3)MR_contextWithStoreCoordinator:此方法創(chuàng)建一個(gè)NSPrivateQueueConcurrencyType類型的上下文,自己指定持久化協(xié)調(diào)器。此上下文默認(rèn)沒有父上下文。
(4)MR_newMainQueueContext:此方法創(chuàng)建一個(gè)NSMainQueueConcurrencyType類型的上下文,默認(rèn)沒有父上下文,沒有指定持久化協(xié)調(diào)器。
(5)MR_newPrivateQueueContext:此方法創(chuàng)建一個(gè)NSPrivateQueueConcurrencyType類型的上下文,默認(rèn)沒有父上下文,沒有指定持久化協(xié)調(diào)器。
3.調(diào)試工具方法
(1)MR_setWorkingName:設(shè)置上下文別名,用于調(diào)試。
(2)MR_workingName:訪問上下文別名。
(3)MR_description:此上下文描述。
(4)MR_parentChain:此上下文的所有父上文描述。
二、NSManagedObjectContext保存方法匯總:
1.MR_saveOnlySelfWithCompletion:在此上下文對應(yīng)隊(duì)列中異步執(zhí)行保存方法。此方法只保存當(dāng)前上下文以及其父上下文,如果此上下文以及其父上下文沒有關(guān)聯(lián)持久化協(xié)調(diào)器,則數(shù)據(jù)更改不會同步到數(shù)據(jù)庫文件。block是在主線程回調(diào)的。
2.MR_saveToPersistentStoreWithCompletion:在此上下文對應(yīng)隊(duì)列中異步執(zhí)行保存方法。此方法會一直追溯到其所有上級上下文,最后將數(shù)據(jù)更改保存到數(shù)據(jù)庫文件。block是在主線程回調(diào)的。
3.MR_saveOnlySelfAndWait:類似于MR_saveOnlySelfWithCompletion,但此方法同步執(zhí)行。
4.MR_saveToPersistentStoreAndWait:類似于MR_saveToPersistentStoreWithCompletion,但此方法同步執(zhí)行。
5.MR_saveWithOptions:completion:保存此上下文,以上四種方法最后都會調(diào)用此方法來執(zhí)行。
6.MRSaveOptions可選選項(xiàng):
?(1)MRSaveOptionNone:空選項(xiàng)。默認(rèn)只保存當(dāng)前上下文以及其父上下文。使用異步方式。
?(2)MRSaveParentContexts:保存此上下文以及所有上級上下文,直到數(shù)據(jù)同步到數(shù)據(jù)庫文件。
?(3)MRSaveSynchronously:使用同步方式。
?(4)MRSaveSynchronouslyExceptRootContext:使用同步方式,但是根上下文使用異步。
三、NSManagedObjectContext數(shù)據(jù)同步
1.MR_observeContext:讓當(dāng)前上下文去監(jiān)聽另一個(gè)上下文的數(shù)據(jù)改變,當(dāng)另一個(gè)上下文有數(shù)據(jù)更改時(shí),會自動同步到此上下文。
2.MR_observeContextOnMainThread:同上,但是數(shù)據(jù)同步過程是在主線程做的。
3.MR_stopObservingContext:停止監(jiān)聽另一個(gè)上下文的數(shù)據(jù)改變。
四、Block方式關(guān)聯(lián)存儲
1.MR_saveWithBlock:傳入一個(gè)上下文,作為當(dāng)前上下文的子上下文。調(diào)用子上下文的performBlock(異步)方法,執(zhí)行Block中的任務(wù),最后將所有數(shù)據(jù)改變同步到數(shù)據(jù)庫文件。
2.MR_saveWithBlock:completion:同上,增加一個(gè)任務(wù)結(jié)束的回調(diào)。
3.MR_saveWithBlockAndWait:傳入一個(gè)上下文,作為當(dāng)前上下文的子上下文。調(diào)用子上下文的performBlockAndWait(同步)方法,執(zhí)行Block中的任務(wù),最后將所有數(shù)據(jù)改變同步到數(shù)據(jù)庫文件。
總結(jié)
以上是生活随笔為你收集整理的MagicRecord For IOS API深层解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git总是提示输入用户名密码的解决记录
- 下一篇: storm的并行度的解释--- ( 看完