使用 prepareForSegue 作为数字而不是字符串传递 textFielddata
Passing textFielddata with prepareForSegue as a number and not a string
我在处理整个字符串 int 时遇到了问题。
我已经设法弄清楚如何将每个字符串转换为数字,但是它 returns 作为一个可选的,当我尝试用它做任何事情时,我得到 nil。
我的目标是从用户那里获取 4 个输入。
每个输入文本字段都在单独的视图控制器上。
每个视图控制器使用 segue prepareForSegue 从它前面的视图控制器传递的变量中获取数据。
现在我到达最后一个视图控制器并且所有数据都顺利通过,问题是我无法对变量中保存的值进行任何数学运算,因为它们是字符串。
即使在使用 .int()
进行转换后,我也无法使用它们进行数学运算。
这是最后一个视图控制器类文件代码:
class splitTheBillAmountViewController: UIViewController {
// capture passed data from previous View Controller
var numOfGuests = ""
var subTotalAmount = ""
var taxAmount = ""
var tipAmount = ""
@IBOutlet weak var dynamicTotal: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
println("Split The Bill!”)
// output variables data
println(numOfGuests)
println(subTotalAmount)
println(taxAmount)
println(tipAmount)
// store variables to new name
let string1 = numOfGuests
let string2 = subTotalAmount
let string3 = taxAmount
let string4 = tipAmount
// conversions
let guestNumber : Int? = string1.toInt()
let subTotalNumber : Int? = string2.toInt()
let taxAmountNumber : Int? = string3.toInt()
let tipNumber : Int? = string4.toInt()
// visual to see if numbers are converted .int()
println("\(guestNumber)")
println("\(subTotalNumber)")
println("\(taxAmountNumber)")
println("\(tipNumber)")
// store data to variable
let fTotal : Int? = (guestNumber)
// Update label with total
self.dynamicTotal.text = “fTotal"
// Do any additional setup after loading the view.
}
如何使用这些变量进行数学运算?
我只需要将它们相加并除以 var numOfGuests
我不确定你是否想对所有这些值使用整数,但除此之外我 运行 这个代码:
var numOfGuests = "2"
var subTotalAmount = "25"
var taxAmount = "3"
var tipAmount = "2"
let string1 = numOfGuests
let string2 = subTotalAmount
let string3 = taxAmount
let string4 = tipAmount
let guestNumber : Int? = string1.toInt()
let subTotalNumber : Int? = string2.toInt()
let taxAmountNumber : Int? = string3.toInt()
let tipNumber : Int? = string4.toInt()
println("\(guestNumber)")
println("\(subTotalNumber)")
println("\(taxAmountNumber)")
println("\(tipNumber)")
它打印了:
可选(2)
可选(25)
可选(3)
可选(2)
然后我将打印语句修改为:
println("\(guestNumber!)")
println("\(subTotalNumber!)")
println("\(taxAmountNumber!)")
println("\(tipNumber!)")
它打印了:
2
25
3
2
在这两种情况下都没有输出 nil。我想你想看看你的原始字符串是如何设置的。也许他们永远不会从“”重置。
顺便说一句,回到使用 Int 类型进行计算,我认为你真的想使用 Float 类型,而不是 Int。
此代码:
var subTotalAmount = "25.15"
let string2 = subTotalAmount
var subTotalNumber = (string2 as NSString).floatValue
println("\(subTotalNumber)")
打印:
25.15
编辑:
我试过复制你的代码,我想你知道你有一个拼写错误,编译器应该警告你。一旦我修正了拼写错误,但是我得到的是零。我让这段代码起作用:
var subTotalAmount = "25.15"
let string2 = subTotalAmount
var subTotalNumber = (string2 as NSString).floatValue
println("\(subTotalNumber)")
let text = NSString(format: "%.2f", subTotalNumber)
println(text)
这会打印:
25.15
25.15
编辑 2:
假设所有数字都是浮点数,总账单为:
var fTotal:Float = subTotalNumber + taxAmountNumber + tipNumber
var costPerGuest:Float = fTotal / guestNumber
let fTotalText = NSString(format: "%.2f", fTotal)
let costPerGuestText = NSString(format: "%.2f", costPerGuest)
我在处理整个字符串 int 时遇到了问题。
我已经设法弄清楚如何将每个字符串转换为数字,但是它 returns 作为一个可选的,当我尝试用它做任何事情时,我得到 nil。
我的目标是从用户那里获取 4 个输入。
每个输入文本字段都在单独的视图控制器上。
每个视图控制器使用 segue prepareForSegue 从它前面的视图控制器传递的变量中获取数据。
现在我到达最后一个视图控制器并且所有数据都顺利通过,问题是我无法对变量中保存的值进行任何数学运算,因为它们是字符串。
即使在使用 .int()
进行转换后,我也无法使用它们进行数学运算。
这是最后一个视图控制器类文件代码:
class splitTheBillAmountViewController: UIViewController {
// capture passed data from previous View Controller
var numOfGuests = ""
var subTotalAmount = ""
var taxAmount = ""
var tipAmount = ""
@IBOutlet weak var dynamicTotal: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
println("Split The Bill!”)
// output variables data
println(numOfGuests)
println(subTotalAmount)
println(taxAmount)
println(tipAmount)
// store variables to new name
let string1 = numOfGuests
let string2 = subTotalAmount
let string3 = taxAmount
let string4 = tipAmount
// conversions
let guestNumber : Int? = string1.toInt()
let subTotalNumber : Int? = string2.toInt()
let taxAmountNumber : Int? = string3.toInt()
let tipNumber : Int? = string4.toInt()
// visual to see if numbers are converted .int()
println("\(guestNumber)")
println("\(subTotalNumber)")
println("\(taxAmountNumber)")
println("\(tipNumber)")
// store data to variable
let fTotal : Int? = (guestNumber)
// Update label with total
self.dynamicTotal.text = “fTotal"
// Do any additional setup after loading the view.
}
如何使用这些变量进行数学运算?
我只需要将它们相加并除以 var numOfGuests
我不确定你是否想对所有这些值使用整数,但除此之外我 运行 这个代码:
var numOfGuests = "2"
var subTotalAmount = "25"
var taxAmount = "3"
var tipAmount = "2"
let string1 = numOfGuests
let string2 = subTotalAmount
let string3 = taxAmount
let string4 = tipAmount
let guestNumber : Int? = string1.toInt()
let subTotalNumber : Int? = string2.toInt()
let taxAmountNumber : Int? = string3.toInt()
let tipNumber : Int? = string4.toInt()
println("\(guestNumber)")
println("\(subTotalNumber)")
println("\(taxAmountNumber)")
println("\(tipNumber)")
它打印了:
可选(2)
可选(25)
可选(3)
可选(2)
然后我将打印语句修改为:
println("\(guestNumber!)")
println("\(subTotalNumber!)")
println("\(taxAmountNumber!)")
println("\(tipNumber!)")
它打印了:
2
25
3
2
在这两种情况下都没有输出 nil。我想你想看看你的原始字符串是如何设置的。也许他们永远不会从“”重置。
顺便说一句,回到使用 Int 类型进行计算,我认为你真的想使用 Float 类型,而不是 Int。
此代码:
var subTotalAmount = "25.15"
let string2 = subTotalAmount
var subTotalNumber = (string2 as NSString).floatValue
println("\(subTotalNumber)")
打印:
25.15
编辑:
我试过复制你的代码,我想你知道你有一个拼写错误,编译器应该警告你。一旦我修正了拼写错误,但是我得到的是零。我让这段代码起作用:
var subTotalAmount = "25.15"
let string2 = subTotalAmount
var subTotalNumber = (string2 as NSString).floatValue
println("\(subTotalNumber)")
let text = NSString(format: "%.2f", subTotalNumber)
println(text)
这会打印:
25.15
25.15
编辑 2:
假设所有数字都是浮点数,总账单为:
var fTotal:Float = subTotalNumber + taxAmountNumber + tipNumber
var costPerGuest:Float = fTotal / guestNumber
let fTotalText = NSString(format: "%.2f", fTotal)
let costPerGuestText = NSString(format: "%.2f", costPerGuest)