私は@jtbandesのコメントには、配列やループから始めることが最善であることに同意します。したがって、すべての変数を別々の変数にする必要はありません。 textFieldsが@IBOutlet
である場合は、アウトレットコレクション(すべてのtextFieldを保持する1つの配列)を使用できます。
@IBOutlet var textfields: [NSTextField]!
は、その後、あなたは単にやるだろう:
for textfield in textfields {
total += textfield.floatValue
}
何ができるかを示すの関心では、テキストフィールドは、(とあなたのクラスがNSObject
から派生)クラスのプロパティであると仮定すると、 キー値コーディングを使用して値を取得することができます。
for i in 1...26 {
if let tf = value(forKey: "a\(i)") as? NSTextField {
total += tf.floatValue
}
}
MacOSののための完全な例:
import Cocoa
class ViewController: NSViewController {
var a1 = NSTextField()
var a2 = NSTextField()
var a3 = NSTextField()
func total() {
// give them some values for testing purposes
a1.stringValue = "1.2"
a2.stringValue = "2.3"
a3.stringValue = "3.14"
var total: Float = 0.0
for i in 1...3 {
if let tf = value(forKey: "a\(i)") as? NSTextField {
total += tf.floatValue
}
}
print(total)
}
}
ViewController().total() // 6.64
のiOSのための完全な例:
import UIKit
class ViewController: UIViewController {
var a1 = UITextField()
var a2 = UITextField()
var a3 = UITextField()
func total() {
// give them some values for testing purposes
a1.text = "1.2"
a2.text = "2.3"
a3.text = "3.14"
var total: Float = 0.0
for i in 1...3 {
if let tf = value(forKey: "a\(i)") as? UITextField {
total += ((tf.text ?? "") as NSString).floatValue
}
}
print(total)
}
}
ViewController().total() // 6.64
すべての26個のテキストフィールドを含む配列を作成し、それらを反復に。 – Alexander
さらに配列やループを使って*始める*ので、決して26個すべてを別々の変数にする必要はありません。 – jtbandes