RayJiang9 最近的时间轴更新
RayJiang9

RayJiang9

V2EX 第 424826 号会员,加入于 2019-06-26 12:39:45 +08:00
今日活跃度排名 181
根据 RayJiang9 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
RayJiang9 最近回复了
2 小时 19 分钟前
回复了 enzy 创建的主题 Apple 关于 iPhone 相册权限中的“私密访问”
@enzy ok 复现了,和 4 楼说的是一致的。
如果 App 从未申请过相册权限,直接用 PHPickerViewController 获取图片的话,在设置里面显示的就是私密访问。
如果 App 申请过相册权限,设置里就是受限访问。
我们没有变是因为没卸载 App ,支付宝已经申请过权限了
2 小时 40 分钟前
回复了 enzy 创建的主题 Apple 关于 iPhone 相册权限中的“私密访问”
我这里还是受限访问,这是怎么弄出来的?

15913 还挺好玩
@COOOOOOde #3 哥们在哪个平台买的,找了一圈没看到这个价格
非凡云开业大吉! https://ffy.com
@KotoLyly #29

你居然记得一模一样
@Xheldon #4 Codable 我不太喜欢用,相比之下还是习惯用 SwiftyJSON 配合脚本生成 Model ,Codable 搭配 @propertyWrapper 可以实现 json 不一一对应,可以看下这个库 BetterCodable
写得很好,枚举的关联值很好用的,在实际项目中也是在大量使用。
举个栗子,处理 IM 的自定义消息可以这样写:
由于枚举的特性,所有写 switch 的地方(如果没有 default ),会编译报错,这样在新增自定义消息类型的时候不会漏掉所有要改的地方。
其次可以把需要用的字段从 JSON 里解析出来,放进枚举方便使用。

enum IMMessageType {
/// 0 (普通文本)
case text(content: String)
/// 1 (详情)
case detail(id: Int, name: String)

init(from json: JSON) throws {
guard let messageType = json["messageType"].int else {
throw CommonAPIError.invalidResponsor
}
switch messageType {
case 0:
self = .text(content: json["content"].stringValue)
case 1:
self = .detail(id: json["detailID"].intValue, name: json["detailName"].stringValue)
default:
throw CommonAPIError.invalidResponsor
}
}

var displayText: String {
switch self {
case .text(let content):
return content
case .detail(_, let name):
return "详情-\(name)"
}
}
}
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3353 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 04:57 · PVG 12:57 · LAX 21:57 · JFK 00:57
Developed with CodeLauncher
♥ Do have faith in what you're doing.