Swiftpack.co - iWECon/Lookup as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by iWECon.
iWECon/Lookup 2.3.1
Quick access to key information in the dictionary. (快速获取字典中的键值信息,链式取值)
⭐️ 4
🕓 28 weeks ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/iWECon/Lookup.git", from: "2.3.1")

Lookup

一个神奇的工具库。

🔥 通过 @dynamicMemberLookup 实现跨层级取值 ~

🔥 不仅可以用字典来初始化,还可以使用任意的 structclass

前要说明:部分思路以及类型判断学习和借鉴自 SwiftyJSON,

基本包含 SwiftyJSON 的所有功能 ~

Platforms

  • .iOS(.v9)

  • .tvOS(.v9)

  • .watchOS(.v6)

  • .macOS(.v10_10)

  • .Vapor(4.0)

Features

  • (🔥🔥🔥)支持链式取值
let dict: [String: Any] = {
    "result": [
        "list": [
            [
                "name": "hello lookup",
                "age": 1
            ]
         ]
    ]
}

let lookup = Lookup(dict)
lookup.result.list.array // -> [["name": "hello lookup"]]
lookup.result.list.0.name.string // -> "hello lookup"
  • (🔥🔥🔥)支持模糊类型转换

比如 1 可转换为 "1", 不需要使用 as, 直接 lookup.value.string 即可

lookup.result.list.0.age.string // -> "1"
lookup.result.list.0.age.int // -> 1
lookup.result.list.0.age.double // -> 1.0
  • 处理错误

这里特指取值失败的情况

// lookup.message.isSome  // 取到了 “message” 的值
// lookup.message.isNone  // 取到的值为 nil,或者没有找到这个 “message” 字段

guard lookup.message.isSome,
    let message = lookup.message.string else {
    return
}
// do something use message
  • 支持 Struct 和 Class

可直接使用 struct 或 class 实例进行初始化

struct Person {
    var name: String
    var age: Int
}

let person = Person(name: "lookup", age: 1)

let lookup = Lookup(person)
lookup.name.string  // -> "lookup"
lookup.age.int  // -> 1
  • 支持 Codable

  • 支持 Vapor

Decode

let lookup = try req.content.decode(Lookup.self)

Encode

let params = Lookup([
    "userId": 1,
    "nickname": "lookup"
])
try await req.client.post(uri, headers: headers) { inoutReq in 
    try inoutReq.content.encode(params)
}

更多用法参考 LookupTests.swift: LookupTests.swift

Installation

Cocoapods

pod 'Lookup', :git => "https://github.com/iWECon/Lookup", :tag => "2.2.1"

Swift Package Manager

// for swift-tools-version: 5.3
// swift 5.0 +
.package(url: "https://github.com/iWECon/Lookup", from: "2.2.0")

GitHub

link
Stars: 4
Last commit: 28 weeks ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

2.3.1
28 weeks ago

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics