所以这里发生的事情是应用程序刚刚收到了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 我的应用程序[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/新文档/W8MckEJ0x2d~HZZIeUH2be6hs41TEOONzKIrCuLcuP4=/6C953E7C-B2AF-47F7-B828-DD062B96415D.1.cdt transactionNumber: 5 ,异常:只在主线程上运行!用户信息:(null) 2013-10-09 07:25:53.803 MyApp[4509:510b] -_PFUbiquityRecordsImporter operation:failedWithError:: CoreData: Ubiquity: 导入操作遇到错误:Error Domain=NSCocoaErrorDomain Code=134060 “操作无法完成。(Cocoa 错误 134060。)” UserInfo=0x16d882c0 {exception=Only run on the main thread!} userInfo: { exception = “Only在主线程上运行!"; }。尝试在 URL 处导入日志文件时:transactionLogLocation: : /var/mobile/Library/Mobile Documents/HHHHHHNNNN~com~mycompany~MyApp/CoreData/New Document/duncangroenewald~simAABC628E-9D5E-58F7-9B8D-0BC724C6D0C8/New文档/W8MckEJ0x2d~HZZIeUH2be6hs41TEOONzKIrCuLcuP4=/6C953E7C-B2AF-47F7-B828-DD062B96415D.1.cdt transactionNumber: 5 2013-10-09 07:25:53.809 MyApp[4509:510b] * UserInfo=0x16d882c0 {exception=只在主线程上运行!} userInfo: { exception = "只在主线程上运行!"; }。尝试在 URL 处导入日志文件时:transactionLogLocation: : /var/mobile/Library/Mobile Documents/HHHHHHNNNN~com~mycompany~MyApp/CoreData/New Document/duncangroenewald~simAABC628E-9D5E-58F7-9B8D-0BC724C6D0C8/New文档/W8MckEJ0x2d~HZZIeUH2be6hs41TEOONzKIrCuLcuP4=/6C953E7C-B2AF-47F7-B828-DD062B96415D.1.cdt transactionNumber: 5 2013-10-09 07:25:53.809 MyApp[4509:510b] * UserInfo=0x16d882c0 {exception=只在主线程上运行!} userInfo: { exception = "只在主线程上运行!"; }。尝试在 URL 处导入日志文件时:transactionLogLocation: : /var/mobile/Library/Mobile Documents/HHHHHHNNNN~com~mycompany~MyApp/CoreData/New Document/duncangroenewald~simAABC628E-9D5E-58F7-9B8D-0BC724C6D0C8/New文档/W8MckEJ0x2d~HZZIeUH2be6hs41TEOONzKIrCuLcuP4=/6C953E7C-B2AF-47F7-B828-DD062B96415D.1.cdt transactionNumber: 5 2013-10-09 07:25:53.809 MyApp[4509:510b] *由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“仅在主线程上运行!” *** First throw call stack: (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: terminating 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/