2013-07-10 38 views
1

我目前使用谷歌分析(V2.0)的iOS GoogleAnalytic連續生產

的最後一個版本例外,我實例在我的appDelegate最常見的方式:

​​

但是,當我「M在運行程序的時候,在日誌中不斷產生這種異常:

An observer of NSManagedObjectContextDidSaveNotification illegally threw an exception. Objects saved = { 
    deleted = "{(\n <GAIHit: 0xc1cac50> (entity: GAIHit; id: 0xc160740 <x-coredata://8854889C-BE6C-49BB-BBA9-99465B86265E/GAIHit/p26> ; data: {\n dispatchUrl = \"https://ssl.google-analytics.com/collect\";\n gaiVersion = \"2.0b4\";\n parametersData = <62706c69 73743030 d4010203 04050852 53542474 6f705824 6f626a65 63747358 24766572 73696f6e 59246172 63686976 6572>;\n timestamp = \"2013-07-10 10:21:55 +0000\";\n})\n)}"; 
    inserted = "{(\n)}"; 
    updated = "{(\n)}"; 
} and exception = Object's persistent store is not reachable from this NSManagedObjectContext's coordinator with userInfo = (null) 

它不會使應用程序崩潰,但它是非常冗長,污染我的日誌。

而且,它似乎工作,因爲GA日誌說:

-[GAIDispatcher dispatchComplete:withStartTime:withRetryNumber:withResponse:withData:withError:] (GAIDispatcher.m:415) DEBUG: Successfully dispatched hit /GAIHit/p51 (0 retries). 

任何想法,以制止這些日誌?

+1

在你的情況下改變處理程序(您註冊'contextChanged:通知)你可以檢查通知是否來自你的核心數據會話或不是這樣的:if(((NSManagedObjectContext *)notification.object).persistentStoreCoordinator!= self.persistentStoreCoordinator)return;' – gklka

回答

4

從GAM文件:

如果你的應用程序使用CoreData框架:應對通知, 例如來自Google Analytics(分析)CoreData對象的NSManagedObjectContextDidSaveNotification可能會導致異常。相反,Apple 建議通過將受管理的 對象上下文指定爲偵聽器的參數來過濾CoreData通知。從Apple瞭解更多信息。

我想這是你的情況

+2

哇。發現得好。非常感謝! – Martin

+1

我不能告訴你這是如何使我陷入困境 - 我所做的只是將我的主要上下文作爲綁定到通知的對象傳遞,並且工作正常。謝謝你,謝謝你,謝謝你! –

+0

我該怎麼做?我的意思是過濾NSManagedObjectContextDidSaveNotification我是新的。謝謝 – Guerrix

0

你應該合併不被第三方庫創建的任何其他情況下只能從管理對象的環境變化。

但是,根據上下文進行過濾意味着在某處存儲所有背景上下文的列表。我發現簡單的解決方案:不是的情況下與你的上下文環境列表它足以只是爲了檢查上下文是否爲您的PersistentStoreCoordinator創建比較: