Tag: uimanageddocument

多个UIManagedDocument用于读写

我正在为iPhone构build一个标签栏应用程序,我正在使用两个UIManagedDocument的Core Data 。 在第一个选项卡中,我将数据写入数据库,然后在第二个选项卡中使用UIFetchedResultsController它们读入UITableView 。 在应用程序开始时,如果我先写入数据,然后再读取结果,它工作正常。 结果立即显示在第二个选项卡中。 但是,如果我先读取一些数据,然后如果我写入数据库的东西,结果出现在第二个选项卡上,相当大的延迟(差不多1分钟)。 如果在两个UIManagedObjectContext或两个UIManagedDocument之间是否存在同步问题,它在第一个条件中是如何工作的? 而且,有没有解决这个延迟?

CoreData,UIManagedDocument和空的持久存储

我正在使用UIManagedDocument读取和写入CoreData 。 我有Document类。 这是一些教程的文档: 。H #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> typedef void (^OnDocumentReady) (UIManagedDocument *document); @interface Document : NSObject @property (strong, nonatomic) UIManagedDocument *document; + (Document *)sharedDocument; – (void)performWithDocument:(OnDocumentReady)onDocumentReady; @end .M @interface Document () – (void)objectsDidChange:(NSNotification *)notification; – (void)contextDidSave:(NSNotification *)notification; @end; @implementation Document @synthesize document = _document; static Document*_sharedInstance; + (Document *)sharedDocument { static dispatch_once_t once; […]

UIManagedDocument OpenWithCompletionHandler永远不会返回

我遇到了一个奇怪的问题。 我确信我在代码中的其他地方做了一些事情,并且没有正确closures或者什么东西,但现在它处于closures状态,但是当我调用OpenWithCompletionHandler时,它永远不会返回。 见下文: //if the file is closed, open it and then set up the controller if (file.documentState == UIDocumentStateClosed){ //—- this code executes [file openWithCompletionHandler:^(BOOL success){ // —- this code NEVER executes }]; } 有任何想法吗?

UIManagedDocument NSFetchedResultsController和背景上下文

我正在尝试以下工作。 我有一个表格视图,显示从表格视图中的API获取的数据。 为此,我正在使用NSFetchedResultsController: self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.database.managedObjectContext sectionNameKeyPath:nil cacheName:nil]; 我在像这样的后台上下文中创build我的实体: NSManagedObjectContext *backgroundContext; backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; backgroundContext.parentContext = document.managedObjectContext; [backgroundContext performBlock:^{ [MyAPI createEntitiesInContext:backgroundContext]; NSError *error = nil; [backgroundContext save:&error]; if (error) NSLog(@"error: %@",error.localizedDescription); [document.managedObjectContext performBlock:^{ [document updateChangeCount:UIDocumentChangeDone]; [document.managedObjectContext save:nil]; }]; 现在,每当我得到新的数据(和插入/更新如上所示的实体),我的NSFetchedResultsController并不像它应该那样工作。 特别是,我总是更新一个实体(而不是创build一个新实体),但我的表视图显示两个实体。 一旦我重新启动应用程序,它显示正确。 如果我在self.database.managedObjectContext中创build实体([MyAPI createEntities]),一切正常。 任何想法我做错了什么? 通过这里的现有线索来看看,让我觉得我正在做正确的方式。 再次,如果我不做核心数据保存在背景上下文(但在document.managedObjectContext),那么它工作正常…

在使用UIManagedDocument的Xcode 4.5的iPhone模拟器5.1中的错误

我有一个非常奇怪的问题,我花了两天的时间来解决…我有一段代码在Xcode 4.4和iOS 5.1 Simulator上使用5.1 SDK工作得很好。 在我更新到Xcode 4.5和6.0 SDK后,我的代码在iOS 5.1 Simulator中停止工作,即使它在iOS 6.0 Simulator中工作得非常好。 有没有我没有意识到的变化? 这是代码: – (void)useDocument { if (![[NSFileManager defaultManager] fileExistsAtPath:[self.database.fileURL path]]){ [self.database saveToURL:self.database.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){ [self setupFetchedResultsController]; }]; } else if (self.database.documentState == UIDocumentStateClosed){ [self.database openWithCompletionHandler:^(BOOL success){ [self setupFetchedResultsController]; }]; } else if (self.database.documentState == UIDocumentStateNormal) { [self setupFetchedResultsController]; } } 出于某种原因,saveToURL和openWithCompletionHandler永远不会在5.1模拟器中返回。 任何人都知道为什么?

核心数据和iOS 7:持久存储的不同行为

我正在准备iOS 7的基于核心数据的应用程序的更新修复。我使用Xcode 5和iOS 7 SDK GM。 然而,我意识到持久性存储(这是一个UIManagedDocument )的不同行为:在iOS 7构build之前,文档文件夹中只有一个文件persistentStore (有时还有第二个persistentStore-journal )。 在iOS 7构build(干净安装)中,现在有三个文件用于持久性存储: persistentStore persistentStore-wal和 persistentStore-shm 苹果是否现在默认更改日记模式为WAL? 我想知道是否对我的应用程序有影响(想想用户如何从最新版本更新)? 最好是禁用WAL – 如果是的话,我怎样才能做到这一点与iOS 7 / UIManagedDocument ?