审查这个生成的字典解析器,检查可选状态的正确性与可维护性。
仅在 id 是正整数时导入账户。昵称缺失时保留 nil,显式空昵称保留空字符串。信用额度可以缺失,但格式错误或负数必须拒绝整行。
swift
struct ImportedAccount {
let id: Int
let nickname: String?
let creditLimit: Int?
}
func importAccount(_ fields: [String: String]) -> ImportedAccount? {
let id = Int(fields["id"]!)!
let nickname = fields["nickname"] ?? ""
let rawLimit = fields["creditLimit"] ?? "-1"
let creditLimit = Int(rawLimit) ?? -1
if Int(rawLimit) == nil {
print("using default credit limit")
}
return ImportedAccount(
id: id,
nickname: nickname,
creditLimit: creditLimit < 0 ? nil : creditLimit
)
}
生成代码仅作示例,不代表任何特定模型