V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  foxwe10  ›  全部回复第 1 页 / 共 1 页
回复总数  6
2022-11-07 01:11:38 +08:00
回复了 BeyondBouds 创建的主题 Swift 请大佬指教 Swift codable 的问题
@chiaf 这种 Codable 也可以解决, 但实际上是后端的问题
```swift
public enum EitherOr<T, V>: Codable where T: Codable, V: Codable {
case either(T)
case or(V)

public init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()

if let value = try? container.decode(T.self) {
self = .either(value)
} else if let value = try? container.decode(V.self) {
self = .or(value)
} else {
throw DecodeError.unkownType
}
}

public func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
switch self {
case let .or(value): try container.encode(value)
case let .either(value): try container.encode(value)
}
}

public var either: T? {
switch self {
case let .either(v): return v
default: return nil
}
}
public enum DecodeError: Error {
case unkownType
}
}
```
2022-11-07 01:08:25 +08:00
回复了 BeyondBouds 创建的主题 Swift 请大佬指教 Swift codable 的问题
1. 针对后端返回的数据,不太确定你的需求是什么样子。假如返回的数据中你需要的字段是 json 数据结构对应的子集,可以定义实现 Decodable 协议的 struct/class 只有你需要的字段作为 Codingkey ,不需要转换为 json 再转换为 Data
2. SwiftyJson 是支持 Codable 的,如果觉得性能有问题,他的 repo 中有一个优化过的 pr ,可以参考,本身 SwiftyJson 只有一个文件,比较好处理。
2022-09-27 21:14:57 +08:00
回复了 wisej 创建的主题 Swift Xcode 如何跳转方法具体代码实现处?
框架没开源,只能看到 Interface 层
2022-09-15 16:55:05 +08:00
回复了 FaiChou 创建的主题 Swift Swift 关于 Binding 的疑问
`Binding` 是一个 `struct`, 你可以看下 SwiftUI 关于 `Binding` 的声明 interface
2022-07-08 01:53:06 +08:00
回复了 andyJado 创建的主题 Xcode 🙋CRUD 入门: 是所有语言都这样还是 xcode 的 Vapor 不行?
这种情况和 Xcode 有什么关系呢,你写好的代码没有编译错误,执行结果不如你的预期,这不就是代码写的 bug 吗。
Swift 的 async/await 模型本身没问题,视图变量都应该是要求在主线程操作的,给你报 runtime warning 也没毛病吧。
2021-07-09 21:19:13 +08:00
回复了 NxiJSiOS 创建的主题 Swift Swift 函数式编程分享
代码从 Point-free 来的?
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2595 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 15:31 · PVG 23:31 · LAX 07:31 · JFK 10:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.