我正准备更新基于Core Data的应用程序以修复iOS 7.我使用Xcode 5和iOS 7 SDK GM.但是我意识到持久性存储的不同行为(即a UIManagedDocument):在iOS 7构建之前,persistentStore文档文件夹中只有一个文件(有时还有第二个文件persistentStore-journal).
在iOS 7构建(干净安装)中,持久性存储现在有三个文件:
persistentStorepersistentStore-wal 和persistentStore-shmApple现在默认将日志模式更改为WAL吗?我想知道我的应用程序是否有影响(想想用户如何从上一版本更新)?是否最好禁用WAL - 如果是这样,我怎么能用iOS 7/UIManagedDocument?
我正在尝试使用打开托管文档 openWithCompletionHandler:
我遇到的问题是它在模拟器上工作正常,但是当我在iPhone 4上测试它时,完成处理程序永远不会完成.代码如下所示:
[theManagedDocument openWithCompletionHandler:^(BOOL success){
if(success) [self documentIsReady];
if(!success) NSLog(@"Couldn't Open Document");
}];
Run Code Online (Sandbox Code Playgroud)
这在模拟器上工作正常,我接到documentIsReady电话(如果错误,则"无法打开文档").但是在iPhone 4上它永远不会运行CompletionHandler块.我已经在整个块中放置了断点(在两个if语句之前和之后)并且没有任何东西被调用.控制台上没有"无法打开文档",没有调用documentIsReady.
我还必须提一下,这似乎是我第一次在iPhone上运行应用程序,它将正常工作.我也将它封装在带有fileExistsAtPath:调用的if语句中.它正在进入if语句并且调用了openWithCompletionHandler:,但是完成块永远不会被触发.
我使用的是iOS 5.1和Xcode 4.3.2.
我正在重新发布我的iPhone应用程序,现在我的UIManagedDocument上的executeFetchRequest获取了一个SQLite错误代码:6922.我搜索了互联网,没有SQLite错误代码6922.任何人都看到这个.使用Xcode 7,一切都运行良好.
我有一个非常奇怪的问题,我花了两天时间试图解决...我有一段代码在Xcode 4.4和iOS 5.1模拟器上使用5.1 SDK完美运行.在我更新到Xcode 4.5和6.0 SDK后,我的代码停止在iOS 5.1模拟器中工作......即使它在iOS 6.0模拟器中完美运行.有什么变化我不知道吗?
这是代码:
- (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];
}
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,saveToURL和openWithCompletionHandler永远不会在5.1模拟器中返回.谁知道为什么?
我在apache spark上运行UIMA应用程序.UIMA RUTA需要处理数百万个页面才能进行计算.但是有一段时间我面临内存异常.它会在成功处理2000页时抛出异常,但有些时候会在500页上失败.
应用日志
Caused by: java.lang.OutOfMemoryError: Java heap space
at org.apache.uima.internal.util.IntArrayUtils.expand_size(IntArrayUtils.java:57)
at org.apache.uima.internal.util.IntArrayUtils.ensure_size(IntArrayUtils.java:39)
at org.apache.uima.cas.impl.Heap.grow(Heap.java:187)
at org.apache.uima.cas.impl.Heap.add(Heap.java:241)
at org.apache.uima.cas.impl.CASImpl.ll_createFS(CASImpl.java:2844)
at org.apache.uima.cas.impl.CASImpl.createFS(CASImpl.java:489)
at org.apache.uima.cas.impl.CASImpl.createAnnotation(CASImpl.java:3837)
at org.apache.uima.ruta.rule.RuleMatch.getMatchedAnnotations(RuleMatch.java:172)
at org.apache.uima.ruta.rule.RuleMatch.getMatchedAnnotationsOf(RuleMatch.java:68)
at org.apache.uima.ruta.rule.RuleMatch.getLastMatchedAnnotation(RuleMatch.java:73)
at org.apache.uima.ruta.rule.ComposedRuleElement.mergeDisjunctiveRuleMatches(ComposedRuleElement.java:330)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueMatch(ComposedRuleElement.java:213)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueOwnMatch(ComposedRuleElement.java:362)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:459)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueMatch(ComposedRuleElement.java:225)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueOwnMatch(ComposedRuleElement.java:362)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:459)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueMatch(ComposedRuleElement.java:225)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueOwnMatch(ComposedRuleElement.java:362)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:459)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueMatch(ComposedRuleElement.java:225)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueOwnMatch(ComposedRuleElement.java:362)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:459)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueMatch(ComposedRuleElement.java:225)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueOwnMatch(ComposedRuleElement.java:362)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:459)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueMatch(ComposedRuleElement.java:225)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueOwnMatch(ComposedRuleElement.java:362)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:459)
at org.apache.uima.ruta.rule.ComposedRuleElement.continueMatch(ComposedRuleElement.java:225) …Run Code Online (Sandbox Code Playgroud) 我正在使用UIManagedDocument来管理我的数据.我创建模型并使用它,一切似乎都在工作,但我的更改不会被写回SQLite存储.
UIManagedDocument的文档说自动保存应该将数据持久化到数据库,但这似乎并没有发生.
NSManagedObjectContext *moc = [doc managedObjectContext];
NSError *error = nil;
MyItem *itemToAdd = (MyItems *)[moc existingObjectWithID:(NSManagedObjectID *)itemsID error:&error];
Run Code Online (Sandbox Code Playgroud)
这将获取我想要添加的对象(并成功).
[itemContainer addItemsObject:itemToAdd];
[doc updateChangeCount:UIDocumentChangeDone];
Run Code Online (Sandbox Code Playgroud)
这会将项添加到另一个对象的项集合中,然后告诉文档我已完成更改.
我希望在此之后不久有一段时间可以看到写入Core Data商店的更改,但是在Instruments中观看,我发现它永远不会发生.
items集合是一个NSOrderedSet,由于对此项目的评论:
我已经为包含集合的对象添加了一个addItemsObject:
- (void)addItemsObject:(MyItem *)value
{
NSMutableOrderedSet* tempSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.items];
[tempSet addObject:value];
self.items = tempSet;
}
Run Code Online (Sandbox Code Playgroud)
也许出现了一些问题,Core Data被告知物品集合已经改变,但我不知道如何.
有一个Stumper(至少对我来说).
我在UIManagedDocument中使用iOS 5.0 w/ARC和Core Data.
我有一个Entity(Group),它与to-many关系(称为people)到实体(Person).当我添加一个新组,然后添加一个新Person(将该人的.group关系设置为新组)时,我无法使用Person实体中的谓词检索相关人员("group ==%@",myGroup ).我也尝试使用Group的addPerson setter.
如果我关闭XCode模拟器并重新运行它,它会识别在上一次运行中创建的关系,我甚至可以将新人添加到现有的Group对象中.我只是无法添加一个新组,然后添加人员而不关闭模拟器(或设备,如果我在设备上运行),以便看到关系.
如果我在添加新组和相关人员后立即执行[group.people count],它会给我正确的数字.但是,在重新启动应用程序之前,使用谓词进行提取无效.
看起来好像UIManagedDocument的managedObjectContext没有看到关系.我已经尝试保存上下文,保存context.parentContext,并保存文档.这些都没有帮助.
任何想法,将不胜感激!
我有一个UIManagedDocument用于与Core Data交互的旧应用程序.然而在iOS 11.2(甚至更早的iOS 11点发布)的saveToURL:forSaveOperation:completionHandler:方法似乎已经停止工作无论在设备和模拟器(但它确实在iOS版10.3.1模拟器仍然有效).具体来说,在下面的代码中,completionHandler内部第一个if语句永远不会执行(如NSLog消息所示).
- (void)useDemoDocument {
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"TWL_Document"];
UIManagedDocument *document = [[UIManagedDocument alloc] initWithFileURL:url];
if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) {
NSLog(@"This Code Executes");
[document saveToURL:url
forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
if (success) {
NSLog(@"But this is never called");
self.managedObjectContext = document.managedObjectContext;
} else {
NSLog(@"This also is not called");
}
}];
} else if (document.documentState == UIDocumentStateClosed) { …Run Code Online (Sandbox Code Playgroud) 使用 SwiftUI 创建基于文档的应用程序时,默认文档类型是子类FileDocument.
所有示例都会导致在此文档类型中使用简单的值类型。
我正在寻找UIManagedDocument在 SwiftUI 中创建一个,但似乎没有提到使用FileDocument核心数据。我注意到了,ReferenceFileDocument但这也没有任何例子......
有人有过使用 SwiftUI 文档类型作为基于核心数据的文档的经验吗?
我一直试图创建一个简单的UIManagedDocument库样式应用程序(保存到iCloud的单独文档)非常失败.
我对以下内容感到困惑:
难道我的子类UIManagedDocument,并成立了persistentStoreCoordinator,ManagedObjectModel与ManagedObjectContext这个子类中,或者这些应该是内部配置的AppDelegate(如果是的话,我怎么去刷新persistentStoreCoordinator看新的文件-看来,一旦已经读了persistentStore这我不能让它读取新的持久存储)?