SwiftyPlistManager 1.0.2

SwiftyPlistManager 1.0.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2017年10月
SwiftSwift 版本4
SPM支持 SPM

Maintained by Alex Nagy.



  • By
  • Alex Nagy






SwiftyPlistManager 是一个轻量级的 plist 数据管理框架,适用于 iOS 10.3+

分步教程

我在 rebeloper.com 上写了一篇关于 SwiftyPlistManager 用法的博客文章,其中包含更多信息和方便的图片。

屏幕截图

Save data
Get data
Fetch data

设置

SwiftyPlistManager 需要模板 plist 文件来将它们用作数据保存和加载的起点。基本上,在应用第一次启动时,它将把它们复制到其在 Document 目录中,然后您将与此复制的 plist 版本进行交互。

只需将您的 plist 文件(或创建它)拖放到您的项目中。您可以选择编辑值以反映您希望的数据结构。

启动 SwiftyPlistManager

重要:您必须在应用每次启动时都“启动” SwiftyPlistManager。假设您已将空的 Data.plist 文件添加到您的项目中,并希望将其添加到您的 Appdelegate.swift 文件中的 application(_:didFinishLaunchingWithOptions:) 函数中下一行代码

SwiftyPlistManager.shared.start(plistNames: ["Data"], logging: true)

如果想要记录在背后的操作,将 logging 设置为 true。在发布前或当您对控制台中的过多文本感到厌烦时,可选地将它设置为 false

plistNames 参数接受一个 String 数组。您可以用想要的任意数量的 plist 文件名启动 SwiftyPlistManager。

SwiftyPlistManager.shared.start(plistNames: ["Data", "OtherData"], logging: true)

用法

添加新值

在您能够与任何键值对交互之前,您需要将其添加到您的数据结构中。所有在 plist 文件中支持的类型都受支持。SwiftyPlistManager 使用完成处理程序,以便您知道操作何时完成。

SwiftyPlistManager.shared.addNew("helloNewValue", key: "newKey", toPlistWithName: "Data") { (err) in
  if err == nil {
    print("Value successfully added into plist.")
  }
}

保存值

接下来,您想编辑您的值,只需保存新值即可。

SwiftyPlistManager.shared.save("helloNewValue", forKey: "newKey", toPlistWithName: "Data") { (err) in
  if err == nil {
    print("Value successfully saved into plist.")
  }
}

获取值

如果您想通过完成处理程序获取回值,您将返回一个 Any? 对象作为您的 result

SwiftyPlistManager.shared.getValue(for: "newKey", fromPlistWithName: "Data") { (result, err) in
  if err == nil {
    print("The Value is: '\(result ?? "No Value Fetched")'")
  }
}

抓取值

通常您想立即将您的结果转换为常量,而不是等待完成处理程序完成。您可以使用以下调用完成此操作。在此示例中,我们将使用 guard-let 语句解包它。

guard let fetchedValue = SwiftyPlistManager.shared.fetchValue(for: "newKey", fromPlistWithName: "Data") else { return }

移除键值对

有时候您可能想要移除值-键对。

SwiftyPlistManager.shared.removeValueKeyPair(for: "newKey", fromPlistWithName: "Data") { (err) in
  if err == nil {
    print("Key-Value pair successfully removed from plist")
  }
}

移除所有键值对

或者,您可能希望从您的 plist 文件中删除所有数据。

SwiftyPlistManager.shared.removeAllKeyValuePairs(fromPlistWithName: "Data") { (err) in
  if err == nil {
    print("Successfully removed all Key-Value pairs from plist")
  }
}

注意:这将不会从磁盘上删除 plist。它只会清空所有键值对。

错误处理

让我们来谈谈错误处理。在使用 SwiftyPlistManager 执行调用时,你可以在完成处理程序中访问可能的错误。

public enum SwiftyPlistManagerError: Error {
  case fileNotWritten
  case fileDoesNotExist
  case fileUnavailable
  case fileAlreadyEmpty
  case keyValuePairAlreadyExists
  case keyValuePairDoesNotExist
}

安装

手动

克隆或下载仓库。找到 SwiftyPlistManager.swift 文件。将其拖放到你的项目中,设置完成。

Swift 3.1

语言 分支 Pod 版本 Xcode 版本
Swift 3.1 master >= 1.0.1 Xcode 8.3 或更高版本
Swift 4 master >= 1.0.1 Xcode 9 或更高版本

变更日志

查看 发布页面

已知注意事项

  • 你只能操作 plist 文件的根键。嵌套的键值对(比如字典中的元素)不能直接访问。你需要从 plist 中获取整个字典,进行修改,然后最终将修改后的字典重新保存到 plist 中。
  • 实际保存操作在 Document 目录下进行。因此,你的更改将不会反映在你项目中所添加的 plist 文件中。

示例代码

项目包含一个 iOS 的演示应用程序,和一个示例 ViewController.swift,展示如何使用 SwiftyPlistManager。

许可证

MIT 许可证

版权所有 (c) 2017 Alex Nagy

任何获得此软件及其相关文档(“软件”)副本的人,都可以免费获得本许可证
使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本,并允许向任何人提供软件副本,条件如下:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,没有任何形式的明示或暗示保证,包括适销性、适用于特定目的和不侵权保证。在任何事件中,作者或版权所有者不对任何索赔、损害或其它责任承担责任,无论是基于合同、侵权或其他,由软件或使用或操纵软件而引起,无论是内部发生还是外部发生。
软件授权使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本,并允许向要提供软件的人提供软件副本,但受以下条件约束:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,没有任何形式的明示或暗示保证,包括适销性、适用于特定目的和不侵权保证。在任何事件中,作者或版权所有者不对任何索赔、损害或其它责任承担责任,无论是基于合同、侵权或其他,由软件或使用或操纵软件而引起,无论是内部发生还是外部发生。
在本软件被任何人提供时,本许可证根据以下条件授予,不得收费。

软件按“原样”提供,没有任何形式的明示或暗示保证,包括适销性、适用于特定目的和不侵权保证。在任何事件中,作者或版权所有者不对任何索赔、损害或其它责任承担责任,无论是基于合同、侵权或其他,由软件或使用或操纵软件而引起,无论是内部发生还是外部发生。
本软件授权供任何人在此软件以及与此软件相关的文档副本中的“软件”使用,没有限制,包括无限制地使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本的权限,并且允许向软件提供的人进行此类操作,但需遵守以下条件。
上述版权声明和本许可声明应包含在所有副本或主要部分中。
本软件按“原样”提供,没有任何形式的明示或暗示保证,包括适销性、适用于特定目的和不侵权保证。在任何事件中,作者或版权所有者不对任何索赔、损害或其它责任承担责任,无论是基于合同、侵权或其他,由软件或使用或操纵软件而引起,无论是内部发生还是外部发生。
在本软件被任何人提供时,本许可证根据以下条件授予,不得收费。
本软件按“原样”提供,没有任何形式的明示或暗示保证,包括适销性、适用于特定目的和不侵权保证。在任何事件中,作者或版权所有者不对任何索赔、损害或其它责任承担责任,无论是基于合同、侵权或其他,由软件或使用或操纵软件而引起,无论是内部发生还是外部发生。
在本软件被任何人提供时,本许可证根据以下条件授予,不得收费。