我最近處理了一些錯誤,其中我將得到一個異常,提到一個通過URI管理的對象。該URI有點幫助。它看起來有點像x-coredata:// blahblahblahblahblah/EntityName/p22。至少我可以告訴發生了什麼類型的實體,但我還沒有能夠追蹤到特定的對象。到目前爲止,我已經能夠調試這些問題而無需弄清楚。在創建時記錄核心數據NSManagedObject ID的最佳方式是什麼?
我想我可以追蹤它。我可能會打開數據庫並執行SQL查詢,直到找到與URL中的某些內容相匹配的東西。但是,這看起來有點麻煩,如果我必須調試beta測試人員或部署的用戶設備上發生的問題,效率也不是很高。所以我認爲在創建對象時記錄對象ID URI以及我可以識別對象的一些屬性會很好。
應該很簡單吧?剛剛好後,我在我的代碼創建一個對象,我做一個的NSLog類似
NSLog(@"Created Foo instance: %@", [foo.objectID URIRepresentation]);
唯一的問題是,在我的URI; M越來越不喜歡看上面。他們看起來更像x-coredata:/// EntityName/blahblahblahblahblah。我意識到我可能會獲得臨時ID。
那麼,我該如何將它與永久ID相匹配呢?如果我可以找到一個掛鉤,我只需將日誌消息寫成「Object with temporary ID%@ reassigned permanent ID%@」即可。
我認爲像 「X-coredata:// blahblahblahblahblah /實體名稱/ P22」(P22的部分)是的objectID在CoreData實體(永久的),你可以得到的只是NSLog'ing中的objectID消息 –
以獲得數字ID,您可以只取objectID的最後一部分並去掉alpha部分。也就是說,拿「p22」並得到「22」,這將對應於你的sqlite數據庫中的z_pk –