2015-01-28 3 views
0

래핑 된 값을 문자열에서 부동으로 캐스팅하려고 했으므로이를 수행 할 수 없습니다. 나는 신속하게 wrapped/unwrapped (? /!)에 관한 지식이 부족하다고 생각한다.스위프트 : 캐스트 래핑 된 값

레이블에서 텍스트를 가져 오려고합니다.

@IBOutlet weak var maxDistance: UILabel! 

가 여기에 내가 시도 내용은 다음과 같습니다 :

여기 내 라벨의

var max = Float(maxDistance.text)! 
--> Could not find an overload for 'init' that accepts the supplied arguments 

var max = Float(maxDistance.text!) 
--> Cannot invoke 'init' with an argument of type '@lvalue String' 

var max = Float(maxDistance!.text) 
--> Cannot invoke 'init' with an argument of type '@lvalue String?' 

var max = Float(maxDistance?.text) 
--> Cannot invoke 'init' with an argument of type '$T4??' 

답변

2

이 「랩 값 "과는 아무 상관이 없습니다. 네가 말하는 것은 단순히 스위프트가 아니다. 아니요 문자열을 Float로 바꾸는 신속한 기본 제공. 이것을 Int (toInt)로 바꿀 수 있습니다. 그렇지 않으면 코코아에 빠져 floatValue으로 전화해야합니다. 따라서 :

let s = "1.3" 
let f = (s as NSString).floatValue 

그러나 실제로 대답하면 안됩니다. 이 텍스트 값의 기초가되는 Float가 있으면 데이터 모델의 일부로 Float을 보존해야합니다. 뷰 텍스트 표현에서 숫자를 가져 오는 것은 MVC (model-view-controller)를 완전히 위반합니다.

+0

사실. 내 코드를 다시 생각하게 만들었고 실제로 더 좋은 아이디어입니다. –

0

당신과 같이 원래의 Obj-C 방법 floatValue을 사용할 수

var max = (maxDistance.text as NSString).floatValue