欢迎来到 CodableFiles,这是一个简单的库,提供了一种更简单的保存、加载或删除在 Documents 目录中的 Codable 对象的方法。它主要旨在将 Encodable 对象保存为 json 字符串并从字符串加载为 Decodable 对象。它本质上是对 Foundation
提供的 FileManager
API 的薄包装。
特性
- 现代、面向对象的 API,用于访问、读取和写入文件。
- 统一的、简单的
do, try, catch
错误处理。 - 易于查找和交互保存的文件。
- 单元测试覆盖率超过 95%。
示例
Codable 对象
struct User: Codable {
let name: String
let lastName: String
}
CodableFiles 共享引用。
let codableFiles = CodableFiles.shared
在默认目录中保存 Codable 对象。
let user = User(name: "First name", lastName: "Last name")
let savePath = try? codableFiles.save(object: user, withFilename: "userModel")
从默认目录加载 Codable 对象。
let loadedObject = try? codableFiles.load(objectType: User.self, withFilename: "userModel")
在默认目录中保存 Codable 对象数组。
let user = User(name: "First name", lastName: "Last name")
let anotherUser = User(name: "Another first name", lastName: "Another last name")
let savePath = try? codableFiles.saveAsArray(objects: [user, anotherUser], withFilename: "usersArray")
从默认目录加载 Codable 对象数组。
let loadedObjects = try? codableFiles.loadAsArray(objectType: User.self, withFilename: "usersArray")
从应用包中加载的文件中的 Codable 对象。
let loadedObject = try? codableFiles.load(objectType: User.self, fileName: "userModel")
从默认目录删除文件。
try? codableFiles.deleteFile(withFileName: "userModel")
从指定目录删除文件。
try? codableFiles.deleteFile(withFileName: "userModel", atDirectory: "directoryName")
删除默认目录。
try? codableFiles.deleteDirectory()
删除目录。
try? codableFiles.deleteDirectory(directoryName: "directoryName")
将指定名称的文件从 Bundle 复制到默认文档目录。
let savedPath = try? codableFiles.copyFileFromBundle(fileName: "user")
检查文档目录中是否存在指定名称的文件。
let isExistingFile = try codableFiles.isInDocumentsDirectory(fileName: "userModel")
使用 do-catch 模式运行方法的示例。
do {
let savedPath = try codableFiles.copyFileFromBundle(fileName: "user")
} catch {
print("CodableFiles - Error: \(error.localizedDescription)")
}
应用包
AppBundle 是只读的,因此您不能通过编程方式向其中写入任何内容。这就是为什么我们始终使用 Documents 目录来读取和写入数据。更多信息:[链接](https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html)
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖项管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 CodableFiles 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
pod 'CodableFiles'
Carthage
Carthage 是一个去中心化的依赖项管理器,它构建您的依赖项并向您提供了二进制框架。要使用 Carthage 将 CodableFiles 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它。
github "egzonpllana/CodableFiles"
通过 Manifest 文件使用 Swift Package Manager
Swift Package Manager 是一个用于自动化 Swift 代码分发的小工具,并集成到 swift
编译器中。
一旦您设置了 Swift 包,将 CodableFiles 作为依赖项添加就非常简单,只需将其添加到 Package.swift
的 dependencies
值中即可。
dependencies: [
.package(url: "https://github.com/egzonpllana/CodableFiles.git", .upToNextMajor(from: "1.0.1"))
]
通过 XCode 使用 Swift Package Manager
要将 CodableFiles 作为依赖项添加到您的 Xcode 项目中,请选择 File > Swift Packages > Add Package Dependency 并输入仓库 URL。
https://github.com/egzonpllana/CodableFiles.git
作为文件
由于 CodableFiles 所有内容都在一个文件中实现,您可以通过简单地将文件 CodableFiles.swift
拖到您的 Xcode 项目中来在任意项目中使用它。
历史背景
那么,这项工作是为了什么呢?在我开发一个提供模拟URL会话和动态JSON数据的项目时,我发现这些数据可以被保存到文档目录中的文件中,或者从Bundle加载,这样我们就可以根据应用程序的需求来更新、读取或删除。必须保存或加载的对象必须遵守Codable协议。所以,我创建了 Codable Files,它可以更快、更直观地处理JSON数据。
有任何问题或反馈吗?
请自由打开一个问题,或者找到@egzonpllana on LinkedIn上的我。