📜  ios swift 本地存储与 icloud - Swift (1)

📅  最后修改于: 2023-12-03 15:15:52.268000             🧑  作者: Mango

iOS Swift 本地存储与 iCloud

简介

在 iOS 开发中,本地存储和 iCloud 存储是常见的存储方式。本地存储是指将数据保存在设备本地,而 iCloud 存储则可以在不同设备之间共享数据。本文将会介绍在 Swift 中如何使用本地存储和 iCloud 存储。

本地存储

本地存储是将数据保存在设备本地的方式,常用的本地存储方式有以下几种:

UserDefaults

UserDefaults 是一种简单的键值对存储方式,比如可以用来保存用户偏好设置、游戏数据等。使用 UserDefaults 储存数据的步骤如下:

  1. 获取 UserDefaults 实例
let userDefaults = UserDefaults.standard
  1. 存储数据
userDefaults.set("Hello, World!", forKey: "key")
  1. 获取数据
let value = userDefaults.string(forKey: "key")
print(value)
Plist

Plist 是一种便于储存结构化数据的文件格式,常用于储存应用程序设置、用户数据等。使用 Plist 储存数据的步骤如下:

  1. 获取 plist 文件路径
guard let plistPath = Bundle.main.path(forResource: "filename", ofType: "plist") else {
    return
}
  1. 读取 plist 文件
let dict = NSDictionary(contentsOfFile: plistPath)
  1. 写入 plist 文件
dict?.write(toFile: plistPath, atomically: true)
CoreData

CoreData 是一种高级的本地数据库存储方式,它可以存储结构化的数据,并支持查询、排序、筛选等复杂操作。使用 CoreData 存储数据的步骤如下:

  1. 创建 CoreData model

  2. 创建 CoreData Stack

lazy var persistentContainer: NSPersistentContainer = {
    let container = NSPersistentContainer(name: "MyApp")
    container.loadPersistentStores(completionHandler: { (storeDescription, error) in
        if let error = error as NSError? {

            fatalError("Unresolved error \(error), \(error.userInfo)")
        }
    })
    return container
}()
  1. 存储数据
let context = persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Person", in: context)!

let person = NSManagedObject(entity: entity, insertInto: context)
person.setValue("Alice", forKeyPath: "name")

do {
    try context.save()
} catch let error as NSError {
    print("Could not save. \(error), \(error.userInfo)")
}
  1. 获取数据
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Person")
do {
    let result = try context.fetch(request)
    for data in result as! [NSManagedObject] {
        let name = data.value(forKey: "name") as! String
    }
} catch {
    print("Failed")
}
iCloud 存储

iCloud 存储是将数据保存在 iCloud 上的一种存储方式。使用 iCloud 储存数据需要先创建开发者账号,并在 App ID 上启用 iCloud。iCloud 存储的数据可以在不同设备之间共享。使用 iCloud 存储数据的步骤如下:

  1. 创建 iCloud container

  2. 获取 iCloud container URL

let fileManager = FileManager.default
guard let iCloudContainerURL = fileManager.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents") else {
    return
}
  1. 写入文件
let filePath = iCloudContainerURL.appendingPathComponent("filename.txt")
try? "Hello, iCloud!".write(to: filePath, atomically: true, encoding: .utf8)
  1. 读取文件
let content = try? String(contentsOf: filePath, encoding: .utf8)
print(content)
结论

本文介绍了在 Swift 中如何使用本地存储和 iCloud 存储。对于小量的结构化数据,可以使用 UserDefaults 或 Plist 存储;而对于大量的结构化数据,可以使用 CoreData 存储;如果需要在多个设备之间共享数据,可以使用 iCloud 存储。