Xcode中解压bundle资源zip包后出现目录层级异常问题求助
问题根因
你替换zip资源包时的打包逻辑发生了变化:旧版本zip是选中decrypted_backup_with_groups目录内部的所有文件直接压缩,新版本zip是直接对decrypted_backup_with_groups整个上层文件夹执行压缩操作,导致zip包根目录自带一层同名目录,解压后自然多出了嵌套层级。你可以直接在本地解压当前使用的zip包验证该结构。
解决方案1(推荐,无需修改代码)
重新打包zip:打开decrypted_backup_with_groups文件夹,选中内部所有文件(包含contacts.json等所有资源)后再执行压缩操作,不要直接右键压缩上层的decrypted_backup_with_groups文件夹,将新的zip包替换回Xcode项目即可恢复原有路径逻辑。
解决方案2(适配现有zip包,修改代码)
如果不需要调整zip包,可以在解压后增加目录层级判断,自动适配嵌套结构:
let zippedFiles = try Zip.quickUnzipFile(path) var baseDir = zippedFiles // 检查解压根目录是否仅存在一个子目录,自动下沉一层路径 let dirContents = try FileManager.default.contentsOfDirectory(at: baseDir, includingPropertiesForKeys: nil, options: .skipsHiddenFiles) if dirContents.count == 1, let subDir = dirContents.first, subDir.hasDirectoryPath { baseDir = subDir } // 直接用URL拼接路径,避免字符串拼接的格式错误 let contactsFileUrl = baseDir.appendingPathComponent("contacts.json") let contactsData = try Data(contentsOf: contactsFileUrl) let backupContacts = try JSONDecoder().decode(ContactsBackupDTO.self, from: contactsData)
内容的提问来源于stack exchange,提问作者Andoni Da Silva
相关产品推荐
相关产品推荐

