2015-01-15 1 views
0

전체 문자열 int thing에 문제가 있습니다.prepareForSegue를 사용하여 textField 데이터를 문자열이 아닌 숫자로 전달

각 문자열을 숫자로 변환하는 방법을 알아 냈지만 선택 사항으로 반환하고 아무 것도하지 않으면 아무 것도 얻지 못합니다.

내 목표는 사용자로부터 4 개의 입력을받는 것입니다.

각 입력 textField는 별도의보기 컨트롤러에 있습니다.

각보기 컨트롤러에는 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에 의해 그들을 나눈다 추가해야

답변

1

난 당신이 모든 값의 int를 사용하려면 모르겠지만, 그 옆이 코드 실행 :

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

어느 경우에도 출력이 없음. 원래 문자열이 어떻게 설정되는지 살펴보고 싶다고 생각합니다. 어쩌면 그들은 ""에서 다시 초기화되지 않을지도 모릅니다.

그런데 계산을 위해 Int 타입을 사용하기 전에 Int가 아닌 Float 타입을 사용하고 싶다고 생각합니다.

이 코드 :

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

EDIT2 : 나는 일이 코드를 가지고 당신이 수레로 모든 숫자를 가정

, 총 법안은 것 be :

var fTotal:Float = subTotalNumber + taxAmountNumber + tipNumber 
var costPerGuest:Float = fTotal/guestNumber 

let fTotalText = NSString(format: "%.2f", fTotal) 
let costPerGuestText = NSString(format: "%.2f", costPerGuest) 
+0

와우 대단히 감사합니다! 나는 그것을 시험 할 것이다. 네 저는 신속하고 모든 가능성과 요소를 이해하는 데 새로운 사람입니다. 내 마음이 행복해질 수 있었던 것입니다. 결과가 너무 좋아서 고마워요! –

+0

다른 변수에 대해서도 숫자를 출력 할 수있었습니다. 이제는 그들을 모두 추가하는 방법을 알아야합니다! LOL 고마워요! –

+0

숫자가 모두 수레로 있어야합니다 ... 수학은 신나해야합니다. 다행히 도울 수있어. – jwlaughton