尝试将多个 Uitextfields 添加为整数 [重复]
Posted
技术标签:
【中文标题】尝试将多个 Uitextfields 添加为整数 [重复]【英文标题】:Trying to add multiple Uitextfields as integers [duplicate] 【发布时间】:2019-01-31 18:39:41 【问题描述】:我无法将我的 Uitextfields 转换为整数。我正在尝试将它们相加以获得第 2 洞和第 3 洞的总分?大家有什么想法吗?我尝试过 Int(hole.text) 和许多其他变体,但我不断收到错误。
//
// ViewController.swift
// Savetext5
//
// Created by Brendan Berkowitz on 1/31/19.
// Copyright © 2019 Brendan Berkowitz. All rights reserved.
//
import UIKit
class ViewController: UIViewController
//hole one
@IBOutlet weak var playername: UITextField!
@IBAction func saveButton(_ sender: Any)
UserDefaults.standard.set(playername.text, forKey: "playonename")
@IBAction func deleteButton(_ sender: Any)
UserDefaults.standard.removeObject(forKey: "playonename")
// hole 2
@IBOutlet weak var holetwo: UITextField!
@IBAction func saveButton2(_ sender: Any)
UserDefaults.standard.set(holetwo.text, forKey: "holetwo")
@IBAction func deleteButton2(_ sender: Any)
UserDefaults.standard.removeObject(forKey: "holetwo")
// hole 3
@IBOutlet weak var holethree: UITextField!
@IBAction func savebutton3(_ sender: Any) UserDefaults.standard.set(holethree.text, forKey: "holethree")
@IBAction func deletebutton3(_ sender: Any) UserDefaults.standard.removeObject(forKey: "holethree")
override func viewDidLoad()
super.viewDidLoad()
//hole one
let savedName = UserDefaults.standard.object(forKey: "playonename")
if let playeronename = savedName as? String
playername.text = playeronename
// Hole two
let savedholetwoname = UserDefaults.standard.object(forKey: "holetwo")
if let holetwoname = savedholetwoname as? String
holetwo.text = holetwoname
// hole three
let savedholethreename = UserDefaults.standard.object(forKey: "holethree")
if let holethreename = savedholethreename as? String
holethree.text = holethreename
【问题讨论】:
展示你的实际尝试。然后搜索您遇到的错误。 与您的问题无关,但 UserDefaults 有一个名为 string(forKey:) 的方法,专门用于检索字符串值。 【参考方案1】:您可以选择多种解决方案。但是在将文本字段的文本转换为 Int 之前,您应该进行一些检查和处理 例如,文本是空的吗?文本格式是否有效?
// define utility function
extension UITextField
var textToInt: Int
// return 0 as default value
return Int(text ?? "0") ?? 0
class ViewController: UIViewController
func totalScore() -> Int
return holetwo.textToInt + holethreename.textToInt
【讨论】:
您可能不想将无效号码视为0
。这就是可选项的全部意义所在。
你是对的。但这取决于要求。我的例子只是展示了你可以如何做的基本方法。它并不完美。如果你想捕捉无效数字,你可以让实用函数 throwable。【参考方案2】:
let textFieldOne = UITextField()
let textFieldTwo = UITextField()
let sum: Int =
if let scoreOne = Int(textFieldOne.text ?? "0"), let scoreTwo = Int(textFieldTwo.text ?? "0")
return scoreOne + scoreTwo
return 0
()
【讨论】:
以上是关于尝试将多个 Uitextfields 添加为整数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
带有 UITextFields 和 UITextViews 的自定义 UIAlertView
UIpickerView 在同一个 ScrollView 中填充多个 uitextFields
为 iPhone 中的不同屏幕改变 UITextFields 的高度和间距