PRJSONPatch 2.0.0

PRJSONPatch 2.0.0

Peter Ringset 维护。



  • 作者
  • peterringset

JSONPatch

CocoaPods Compatible Carthage Compatible MIT Licence

Swift μ 框架,用于创建符合 RFC6902JSON 补丁 对象

要求

  • iOS 8.0+ / macOS 10.13+
  • Swift 4.2+

重要

框架依赖于 Objective C 运行时将键值路径转换为字符串,因此指向这些路径的属性需要在 Objective C 中可表示。为了实现这一点,您必须在每个变量声明处添加 @objc 注解。

class Patch: NSObject {
    @objc var baz: String!
    @objc var foo: String!
    @objc var hello: [String]!
}

或者,如果所有类成员都在 Objective C 中可表示,您可以在类级别使用 @objcMembers 注解

@objcMembers class Patch: NSObject {
	...
}

安装

Carthage

要使用 Carthage 将 JSONPatch 集成到您的 Xcode 项目中,请将其指定在您的 Cartfile

github "peterringset/JSONPatch" ~> 2.0

CocoaPods

要使用 CocoaPods 将 JSONPatch 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它。

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'PRJSONPatch', '~> 2.0'
end

Swift 包管理器

要将包依赖项添加到您的 Xcode 项目中,请选择文件 > Swift 包 > 添加包依赖项,并输入 https://github.com/peterringset/JSONPatch

使用方法

使用 Swift 中的 keypath 创建 JSON patch 对象。

import JSONPatch

let stringChanges: [JSONPatch<Patch>] = [
    .replace(\.baz, value: "boo"),
    .remove(\.foo)
]
let arrayChanges: [JSONPatch<Patch>] = [
    .add(\.hello, value: ["world"])
]

创建好一系列更改后,可以使用 JSONEncoder 将其转换为 json 数据。

let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted

let data = try! encoder.encode(changes)
print(String(data: data, encoding: .utf8)!)

这将打印以下 json 数据:

[
  {
    "op" : "replace",
    "path" : "\/baz",
    "value" : "boo"
  },
  {
    "op" : "remove",
    "path" : "\/foo"
  },
  {
    "op" : "add",
    "path" : "\/hello",
    "value" : [
      "world"
    ]
  }
]

JSONPatch 支持在 RFC6902 中指定的所有动词:`add`、`remove`、`replace`、`move`、`copy` 和 `test`。