gpt4 book ai didi

ios - 使用 UIManagedDocument 保存核心数据时出错

转载 作者:行者123 更新时间:2023-11-29 04:43:01 29 4
gpt4 key购买 nike

我设置了异常断点,当我调用时- (void)saveToURL:(NSURL *)url forSaveOperation:(UIDocumentSaveOperation)saveOperation finishHandler:(void (^)(BOOL success))completionHandler在我的 UIManagedDocument 上,我有时会收到以下错误:

* thread #3: tid = 0x2003, 0x357a8238 libobjc.A.dylib`objc_exception_throw, stop reason = breakpoint 1.1
frame #0: 0x357a8238 libobjc.A.dylib`objc_exception_throw
frame #1: 0x3154a122 CoreData`-[NSPersistentStore(_NSInternalMethods) _preflightCrossCheck] + 758
frame #2: 0x314bb296 CoreData`-[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 970
frame #3: 0x31523286 CoreData`-[NSManagedObjectContext save:] + 522
frame #4: 0x33d0ac5a UIKit`__84-[UIManagedDocument writeContents:toURL:forSaveOperation:originalContentsURL:error:]_block_invoke_0 + 30
frame #5: 0x3152d3ee CoreData`developerSubmittedBlockToNSManagedObjectContextPerform + 74
frame #6: 0x344fa7e6 libdispatch.dylib`_dispatch_barrier_sync_f_invoke + 26
frame #7: 0x344fa646 libdispatch.dylib`dispatch_barrier_sync_f$VARIANT$mp + 62

在我的控制台登录管理器中我看到了这个:

Apr 9 12:45:47 unknown District[232] : (Error) com.apple.UIKit.UIDocument: document: fileURL: file://localhost/var/mobile/Applications/F1A7026C-5ADD-4FAF-9C8C-887514F6EACA/Documents/PLDB/ documentState: [Normal] hit writing error: Error Domain=NSCocoaErrorDomain Code=134030 "The operation couldn’-t -b-e -c-o-m-p-l-e-t-e-d-. -(-C-o-c-o-a -e-r-r-o-r -1-3-4-0-3-0-.-)-" -U-s-e-r-I-n-f-o-=-0-x-5-c-1-6-8-0 -{-N-S-A-f-f-e-c-t-e-d-S-t-o-r-e-s-E-r-r-o-r-K-e-y-=-(^J -"-<-N-S-S-Q-L-C-o-r-e-: -0-x-5-b-2-7-4-0-> -(-U-R-L-: -f-i-l-e-:-/-/-l-o-c-a-l-h-o-s-t-/-v-a-r-/-m-o-b-i-l-e-/-A-p-p-l-i-c-a-t-i-o-n-s-/-F-1-A-7-0-2-6-C---5-A-D-D---4-F-A-F---9-C-8-C---8-8-7-5-1-4-F-6-E-A-C-A-/-D-o-c-u-m-e-n-t-s-/-P-L-D-B-/-S-t-o-r-e-C-o-n-t-e-n-t-/-p-e-r-s-i-s-t-e-n-t-S-t-o-r-e-)-"^J-)-, -N-S-U-n-d-e-r-l-y-i-n-g-E-r-r-o-r-=-0-x-5-e-8-0-2-0 -"-T-h-e -o-p-e-r-a-t-i-o-n -c-o-u-l-d-n’-t -b-e -c-o-m-p-l-e-t-e-d-. -(-C-o-c-o-a -e-r-r-o-r -4-.-)-"-, -N-S-F-i-l-e-P-a-t-h-=-/-v-a-r-/-m-o-b-i-l-e-/-A-p-p-l-i-c-a-t-i-o-n-s-/-F-1-A-7-0-2-6-C---5-A-D-D---4-F-A-F---9-C-8-C---8-8-7-5-1-4-F-6-E-A-C-A-/-D-o-c-u-m-e-n-t-s-/-P-L-D-B-/-S-t-o-r-e-C-o-n-t-e-n-t-/-p-e-r-s-i-s-t-e-n-t-S-t-o-r-e-} Apr 9 12:45:47 unknown District[232] : (Error) com.apple.UIKit.UIDocument: UIDocument unrecoverable error with description: The operation couldn’-t -b-e -c-o-m-p-l-e-t-e-d-. -(-C-o-c-o-a -e-r-r-o-r -1-3-4-0-3-0-.-) -r-e-a-s-o-n-: -(-n-u-l-l-) Apr 9 12:45:47 unknown District[232] : (Error) com.apple.UIKit.UIDocument: Failed to recover from error with description: The operation couldn’-t -b-e -c-o-m-p-l-e-t-e-d-. -(-C-o-c-o-a -e-r-r-o-r -1-3-4-0-3-0-.-) -r-e-a-s-o-n-: -(-n-u-l-l-)

并不是每次都会发生,所以也许是时间问题?它不会使我的程序崩溃,但会在异常断点处中断,并且我的 block 的成功值为“否”。

最佳答案

我听到过关于使用 UIManagedDocument 保存核心数据的不同意见。有些人说永远不要调用 saveToUrl...除非您第一次创建文档。然而,我记得从斯坦福 iOS 类(class)中了解到,当您明确想要保存时,可以调用 saveToUrl... 。有人说用

[文档 updateChangeCount:UIDocumentChangeDone]

通知核心数据需要保存。有人说它会在自己的时间里拯救自己。有人说您可以使用 [context acquirePermanentIDsForObjects: ...] 来解决临时 ID 问题,例如 MSManagedObjectContext 上的以下类别:

- (BOOL)obtainPermanentIDsForInsertedObjects:(NSError **)error
{
NSSet * inserts = [self insertedObjects];

if ([inserts count] == 0) return YES;

return [self obtainPermanentIDsForObjects:[inserts allObjects]
error:error];
}

我希望我知道答案,但我认为我的问题是我调用 saveToUrl...太多了。我删除了除第一个之外的所有 saveToUrl.. 调用,事情似乎工作得更好更快。如果由于某种原因必须保存文档,请尝试前面的方法之一。

关于ios - 使用 UIManagedDocument 保存核心数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078280/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com