2
我使用以下方法从服务器使用RestKit(0.10.0)和后端核心数据加载编辑对象。作为同步过程的一部分的方法在应用程序进入前台时被调用。RestKit - 仅在第二次调用时才将缓存保存到核心数据
[syncObjectManager loadObjectsAtResourcePath:[NSString stringWithFormat:@"?config=accounts&since=%@", lastSync] usingBlock:^(RKObjectLoader *loader) {
[loader.mappingProvider setObjectMapping:companyMappingSync forKeyPath:@"data"];
loader.backgroundPolicy = RKRequestBackgroundPolicyContinue;
loader.delegate = self;
}];
响应加载正常,缓存似乎也被发现。
2012-04-11 15:58:32.147 mobileCRM[3575:707] T restkit.support:RKCache.m:82 Found cachePath '/var/mobile/Applications/C5E4BF4F-4CB0-4F4C-AC11-FC1E17AE4AF2/Library/Caches/RKClientRequestCache-www.URLTOSERVER.de/PermanentStore/37abc4aff62918578288d10530e6bcd6' for PermanentStore/37abc4aff62918578288d10530e6bcd6
2012-04-11 15:58:32.152 mobileCRM[3575:707] T restkit.support:RKCache.m:119 Wrote cached data to path '/var/mobile/Applications/C5E4BF4F-4CB0-4F4C-AC11-FC1E17AE4AF2/Library/Caches/RKClientRequestCache-www.URLTOSERVER.de/PermanentStore/37abc4aff62918578288d10530e6bcd6'
2012-04-11 15:58:32.158 mobileCRM[3575:707] T restkit.support:RKCache.m:100 Writing dictionary to cache key: 'PermanentStore/37abc4aff62918578288d10530e6bcd6.headers'
2012-04-11 15:58:32.159 mobileCRM[3575:707] T restkit.support:RKCache.m:82 Found cachePath '/var/mobile/Applications/C5E4BF4F-4CB0-4F4C-AC11-FC1E17AE4AF2/Library/Caches/RKClientRequestCache-www.URLTOSERVER.de/PermanentStore/37abc4aff62918578288d10530e6bcd6.headers' for PermanentStore/37abc4aff62918578288d10530e6bcd6.headers
2012-04-11 15:58:32.166 mobileCRM[3575:707] T restkit.support:RKCache.m:103 Wrote cached dictionary to cacheKey 'PermanentStore/37abc4aff62918578288d10530e6bcd6.headers'
当测试属性“街道”的变化时,变化也被很好地映射。
2012-04-11 15:58:33.013 mobileCRM[3575:1a03] T restkit.object_mapping:RKObjectMappingOperation.m:332 Mapped attribute value from keyPath 'street' to 'street'. Value: Musterweg 55
完成操作后,我调用一个新的fetchRequest并重新加载所属表视图。
问题
不知何故所述第一呼叫之后的改变的对象不被保存在后端(即使核心数据示出了COMMIT消息)。
2012-04-11 16:05:44.235 mobileCRM[3603:351f] I restkit.core_data:RKInMemoryEntityCache.m:131 Caching all 2861 Company objectsIDs to thread local storage
2012-04-11 16:05:44.354 mobileCRM[3603:351f] CoreData: sql: BEGIN EXCLUSIVE
2012-04-11 16:05:44.357 mobileCRM[3603:351f] CoreData: sql: UPDATE ZCOMPANY SET ZSTREET = ?, Z_OPT = ? WHERE Z_PK = ? AND Z_OPT = ?
2012-04-11 16:05:44.361 mobileCRM[3603:351f] CoreData: sql: COMMIT
但是,当我第二次打开应用程序再次调用该方法时,刷新的数据如预期显示。所以我很努力让这个方法在第一次通话中工作。
感谢您的想法!
根据问题/答案计划,您应将解决方案作为答案发布并接受它。这有助于其他用户看到这是一个解决的问题并找到答案。 – Kai 2012-04-12 10:23:15
下次会记住它,谢谢! – flashfabrixx 2012-04-12 13:39:02