2013-07-10 42 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创建比较: