-existingObjectWithID:error:
和–objectWithID:
有何區別?-existingObjectWithID:error:和-objectWithID之間有什麼區別?
回答
objectWithID:
假定對象存在,所以如果你給它一個壞的ID,當你試圖在返回的實體訪問屬性會拋出異常。而且,這個方法總是返回一個實體。
existingObjectWithID:error:
將返回一個對象,如果它存在和nil
,如果它不存在。如果出現錯誤,它將填充錯誤指針。也就是說,它在此NSManagedObjectContext
創建的,或已被提取(或使用objectWithID:
檢索) - 如果它已經登記
我相信existingObjectWithID:error:
回報,只有當它已經被註冊與接收方面的實例。 objectWithID:
可能會返回尚未註冊(拉入)接收上下文的對象的錯誤。
如果對象不在當前上下文中,該文檔實際上指示'existingObjectWithID:error:'將查詢持久性存儲。只有當它找不到對象時纔會出錯。這是獲取現有對象的最明確的方法,而不是關心對象是否存在的'objectWithID:'和'objectRegisteredWithID:',這需要對象已經加載到上下文中。 – 2013-12-26 22:17:12
existingObjectWithID:error:
將返回的對象。否則返回nil
。該方法無法找到數據存儲中但從未被此上下文檢索到的管理對象。如果這個方法得到一個壞的id或者一個已經被刪除的對象的id,它將永遠不會拋出異常。
數據存儲區中尚未檢索到的受管對象可能會因故障而丟失objectWithID:
- 現在它將被註冊並可被訪問。如果objectID不合適或對象已被刪除,則會引發異常。
需要注意的是對象ID 將在第一個變化(從臨時到永久ID)保存,所以不要指望創建一個對象,保持對它的引用原來的ID,然後恢復是非常重要的它在保存後使用該ID。您可以撥打電話isTemporaryID
以確定保存後對象ID是否會更改。
如果您處於子上下文中並且該對象在父級中註冊,該怎麼辦?即使子上下文尚未註冊此對象,子項上的ExistingObjectWithID也會通過父項返回。那是對的嗎? – bandejapaisa 2013-05-03 19:53:28
聲明:「此數據存儲中的一個託管對象通過此方法找不到,但此方法從未檢索到該對象。」是錯誤的。 'existingObjectWithID:error:'在上下文中查找對象,如果沒有找到它,它將查找上下文的父上下文(以及上下文的父上下文等)或上下文的持久存儲直到找到它。如果發現它,則將其錯誤地放入上下文中並返回。如果沒有找到它,則返回'nil'。 – Peyman 2014-06-18 21:50:41
- 1. 「層」和「層」之間有什麼區別?
- 2. Tableau和QlikView之間有什麼區別
- 3. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 4. @Entity和@embeddable之間有什麼區別
- 5. ContentObservable和DataSetObservable之間有什麼區別?
- 6. touchmove和gesturechange之間有什麼區別?
- 7. :notification.flags和notification.defaults之間有什麼區別?
- 8. proc和lambda之間有什麼區別?
- 9. :: after和after之間有什麼區別?
- 10. read()和io.read()之間有什麼區別?
- 11. Request()和Request.Form()之間有什麼區別?
- 12. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 13. getA()和this.getA()之間有什麼區別?
- 14. (int)和intval()之間有什麼區別?
- 15. set_value和= pandas之間有什麼區別
- 16. * zoom和zoom之間有什麼區別?
- 17. {0}和「」之間有什麼區別?
- 18. typedef和using之間有什麼區別?
- 19. 「」和「'之間有什麼區別?
- 20. STDIN和tty之間有什麼區別?
- 21. +和%之間有什麼區別?
- 22. sysfs_create_file()和sysfs_create_group()之間有什麼區別?
- 23. Lazy.Force()和Lazy.Value之間有什麼區別
- 24. ReleaseFloatArrayElements和DeleteLocalRef之間有什麼區別
- 25. AutomationProperties.AutomationID和AutomationProperties.Name之間有什麼區別?
- 26. gets()和getc()之間有什麼區別?
- 27. _id:ObjectID和String之間有什麼區別?
- 28. @ResponseBody和HttpServletResponce之間有什麼區別
- 29. PlaceboTransaction和TopLevelTransaction之間有什麼區別
- 30. Iterator和Generator之間有什麼區別?
我試過objectWithID:它不會拋出任何異常。請參閱http://stackoverflow.com/questions/3013194/must-i-explicitely-enable-exceptions-in-xcode – dontWatchMyProfile 2010-06-10 09:53:54