值始终为零 [关闭]
Posted
技术标签:
【中文标题】值始终为零 [关闭]【英文标题】:Value is always nil [closed] 【发布时间】:2017-02-08 05:47:08 【问题描述】:我有一个将在图表中显示十个字符串的文本字段。如果文本字段 1 有文本,那么它将显示在文本字段 2 上,如果文本字段 2 有文本,那么它将转到文本字段 3,依此类推。但由于某种原因,它总是在文本字段 1 中显示字符串。我附上了我的代码,这可能是一个愚蠢的错误。
@IBOutlet weak var name: UITextField!
let pone = UserDefaults.standard
let ptwo = UserDefaults.standard
let pthree = UserDefaults.standard
let pfour = UserDefaults.standard
let pfive = UserDefaults.standard
let psix = UserDefaults.standard
let pseven = UserDefaults.standard
let peight = UserDefaults.standard
let pnine = UserDefaults.standard
let pten = UserDefaults.standard
let pelleven = UserDefaults.standard
let ptwelve = UserDefaults.standard
let pthirteen = UserDefaults.standard
let pfourteen = UserDefaults.standard
let pfifteen = UserDefaults.standard
if pone.string(forKey: "number1") != nil
if !(pone.string(forKey: "number1")?.isEmpty)!
pone.set(name.text, forKey: "number1")
else
if ptwo.string(forKey: "number2") != nil
if !(ptwo.string(forKey: "number2")?.isEmpty)!
ptwo.set(name.text, forKey: "number2")
else
if pthree.string(forKey: "number3") != nil
if !(pthree.string(forKey: "number3")?.isEmpty)!
pthree.set(name.text, forKey: "number3")
else
if pfour.string(forKey: "number4") != nil
if !(pfour.string(forKey: "number4")?.isEmpty)!
pfour.set(name.text, forKey: "number4")
else
if pfive.string(forKey: "number5") != nil
if !(pfive.string(forKey: "number5")?.isEmpty)!
pfive.set(name.text, forKey: "number5")
else
if psix.string(forKey: "number6") != nil
if !(psix.string(forKey: "number6")?.isEmpty)!
psix.set(name.text, forKey: "number6")
else
if pseven.string(forKey: "number7") != nil
if !(pseven.string(forKey: "number7")?.isEmpty)!
pseven.set(name.text, forKey: "number7")
else
if peight.string(forKey: "number8") != nil
if !(peight.string(forKey: "number8")?.isEmpty)!
peight.set(name.text, forKey: "number8")
else
if pnine.string(forKey: "number9") != nil
if !(pnine.string(forKey: "number9")?.isEmpty)!
pnine.set(name.text, forKey: "number9")
else
if pten.string(forKey: "number10") != nil
if !(pten.string(forKey: "number10")?.isEmpty)!
pten.set(name.text, forKey: "number10")
else
if pelleven.string(forKey: "number11") != nil
if !(pelleven.string(forKey: "number11")?.isEmpty)!
pelleven.set(name.text, forKey: "number11")
else
if ptwelve.string(forKey: "number12") != nil
if !(ptwelve.string(forKey: "number12")?.isEmpty)!
ptwelve .set(name.text, forKey: "number12")
else
if pthirteen.string(forKey: "number13") != nil
if !(pthirteen.string(forKey: "number13")?.isEmpty)!
pthirteen.set(name.text, forKey: "number13")
else
if pfourteen.string(forKey: "number14") != nil
if !(pfourteen.string(forKey: "number14")?.isEmpty)!
pfourteen.set(name.text, forKey: "number14")
else
if pfifteen.string(forKey: "number15") != nil
if !(pfifteen.string(forKey: "number15")?.isEmpty)!
pfifteen.set(name.text, forKey: "number15")
【问题讨论】:
为什么将 15 个变量设置为完全相同的 o.0? @Alexander 请帮我纠正一下 我正在努力 你能解释一下这整个混乱的目的是什么吗?逆向工程你的 intent 对我来说有点困难 据我所知,您想为所有值不为零的键中的第一个设置值,除非它是空的 【参考方案1】:这是我想出的替代所有这些的方法:
let keys = (0...15).map "number\($0)"
for key in keys
guard let existingValue = UserDefaults.standard.string(forKey: key),
existingValue.isEmpty else
continue
UserDefaults.standard.set(name.text, forKey: key)
【讨论】:
以上是关于值始终为零 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
将数组从一行复制到一个数组对象中-“_numbersArray 永远不会分配给,并且始终具有其默认值 null”[关闭]