【发布时间】:2013-10-15 23:47:30
【问题描述】:
所以这里发生的事情是该应用刚刚收到NSPersistentStoreDidImportUbiquitousContentChangesNotification,而我刚刚调用了
- (void)storesDidUpdate:(NSNotification*)note {
FLOG(@"storesDidUpdate ");
[_managedObjectContext mergeChangesFromContextDidSaveNotification:note];
// Refresh user Interface
[[NSNotificationCenter defaultCenter] postNotificationName:@"iProjectCoreDataUpdated"
object:self];
[self updateDetails];
}
现在,应用程序正在尝试通过简单地执行以下操作来使用新的文本副本更新 UITextView:
self.detailText.attributedText = [self.detailItem valueForKey:@"scope"];
其中 detailItem 是在从 iCloud 接收更新之前检索到的 NSManagedObject。
不知道为什么 textContainer 会抱怨或抱怨什么,也不知道为什么会发生导入日志,因为我已经收到通知说它已经完成了!
奇怪的是,如果我调用 reloadData,其他 UITableViews 会正确更新。
关于我是否在这里做错了什么有什么想法吗?请注意,如果我不尝试更新 textView 它工作正常,如果我关闭视图并返回它,那么我会得到正确的数据。
此外,当我重新启动应用程序时,所有数据都在那里,没有损坏或任何东西,事实上,尽管 iCloud 两边都出现了问题,但该应用程序在大多数方面在核心数据存储方面看起来都非常强大!
哦,reloadFetchedResults 有点误导,因为我似乎不需要这样做,所以方法名称是过去的遗留物,我所做的只是在此调用中刷新 UI 中的值。
2013-10-09 07:25:53.783 MyApp[4509:510b] OpeningViewController.reloadFetchedResults:调用 2013-10-09 07:25:53.786 MyApp [4509:510b] InfoDetailViewController.reloadFetchedResults:在 InfoDetailViewController 中调用 2013-10-09 07:25:53.788 MyApp[4509:510b] * void _UIPerformResizeOfTextViewForTextContainer(NSLayoutManager *, UIView *, NSTextContainer *, NSUInteger)() 中的断言失败, /SourceCache/UIFoundation/UIFoundation-258/UIFoundation /TextSystem/NSLayoutManager_Private.m:1510 2013-10-09 07:25:53.793 MyApp [4509:510b] -_PFUbiquityRecordImportOperation main:CoreData:Ubiquity:导入事务日志时出错: transactionLogLocation::/var/mobile/Library/Mobile Documents/HHHHHHNNNN~com~mycompany~MyApp/CoreData/New Document/duncangroenewald~simAABC628E-9D5E-58F7-9B8D-0BC724C6D0C8/New Document/W8MckEJ0x2d~HZZIeUH2be6hs41-CAFONzKIrCuLcuB4= 47F7-B828-DD062B96415D.1.cdt 交易编号:5 ,例外:只在主线程上运行! 用户信息:(空) 2013-10-09 07:25:53.803 MyApp[4509:510b] -_PFUbiquityRecordsImporter 操作:failedWithError:: CoreData:Ubiquity:导入操作遇到错误:Error Domain=NSCocoaErrorDomain Code=134060“操作无法完成。( Cocoa 错误 134060.)" UserInfo=0x16d882c0 {exception=仅在主线程上运行!} 用户信息: { exception = "只在主线程上运行!"; }。尝试在 URL 处导入日志文件时: transactionLogLocation::/var/mobile/Library/Mobile Documents/HHHHHHNNNN~com~mycompany~MyApp/CoreData/New Document/duncangroenewald~simAABC628E-9D5E-58F7-9B8D-0BC724C6D0C8/New Document/W8MckEJ0x2d~HZZIeUH2be6hs41-CAFONzKIrCuLcuB4= 47F7-B828-DD062B96415D.1.cdt 交易编号:5 2013-10-09 07:25:53.809 MyApp[4509:510b] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“仅在主线程上运行!” *** 首先抛出调用堆栈: (0x2ff23f53 0x3a6996af 0x2ff23e2d 0x308cb1df 0x3796643d 0x37966185 0x3798f7bb 0x379926f7 0x37992759 0x379b378b 0x379b331f 0x379b2f0d 0x3273b05d 0x129717 0x2fee6121 0x2fe5a317 0x3083edcd 0x308436ab 0x118263 0x2fee6121 0x2fe5a317 0x2fd8c69f 0x2fd8cc93 0x2fd813dd 0x3085197b 0x308f5b35 0x3ab83297 0x3ab8309b 0x3ab83d15 0x3ab83f8d 0x3acbedbf 0x3acbec84) libc++abi.dylib:以 NSException 类型的未捕获异常终止
编辑: 我在这里发布了一些适用于 iOS 和 OSX 的示例 Core Data/iCloud 应用程序 - 它们包括用于加载/删除数据以及 iCloud 同步的后台线程。希望解决这里描述的问题。 http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/
【问题讨论】:
-
奇怪的是,在其他视图上完全相同的代码似乎可以毫无问题地更新 UI。
-
很难确定,但错误消息反复显示
Only run on the main thread!这一事实可能是一个需要立即认真考虑的大、大、巨大、重要的线索。 -
汤姆见下面的附加信息...
标签: ios objective-c core-data icloud