值始终为零 [关闭]

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”[关闭]

为啥麦克风关闭时基频和幅度不为零?

CSS图像父P标签高度保持为零[关闭]

为啥当我重载数组运算符时我的私有变量为零? [关闭]

如何解决线程“main”中的异常,java.lang.ArithmeticException:/为零? [关闭]