SwiftData真机运行报错:无法生成持久化存储目录求助
SwiftData ModelContainer真机创建失败排查问题
已配置SwiftData的ModelContainer,定义schema并通过return try ModelContainer(for: schema)创建容器。该应用在未激活iCloud的模拟器中运行正常,但真机执行时抛出以下错误:
CoreData: fault: Unhandled exception finding default Directory URL '+[NSPersistentCloudKitContainer defaultDirectoryURL] Could not conjure up a useful location for writing persistent stores.'
同时伴随错误信息:
Database located at: file:///var/mobile/Containers/Data/Application/13FE17A8-8D88-4A1C-A50C-FBC93CE97718/Library/Application%20Support/" CoreData: error: Failed to create directory
无论是否使用ModelConfiguration,问题均存在。怀疑设备启用的「增强iCloud安全」是诱因,但未找到对应解决步骤。
补充尝试
尝试手动指定数据库URL,代码如下:
let url = URL.documentsDirectory.appending(path: "database.sqlite") debugPrint("Database located at: \(url)") let config = ModelConfiguration(url: url) return try ModelContainer(for: schema, configurations: [config])
执行后输出:
"Database located at: file:///var/mobile/Containers/Data/Application/867C00EA-DE25-4C18-A5DE-9FA4686C9E70/Documents/database.sqlite" CoreData: error: Failed to create directory file:///var/mobile/Containers/Data/Application/867C00EA-DE25-4C18-A5DE-9FA4686C9E70/Library/Application%20Support/: NSCocoaErrorDomain (513) CoreData: fault: Unhandled exception finding default Directory URL '+[NSPersistentCloudKitContainer defaultDirectoryURL] Could not conjure up a useful location for writing persistent stores.'
疑问
- SwiftData是否会忽略手动指定的URL?
- 何种情况下会出现该现象?
- 为何该问题仅在真机出现,未激活iCloud的模拟器无此问题?
内容的提问来源于stack exchange,提问作者Hardy
相关产品推荐
相关产品推荐

