2016-09-21 4 views
3

swift3으로 마이그레이션 한 후 안녕하세요. 이 문제가 있습니까? 너희들이 뭘 잘못 알고 있니? 내가 당신이라면 회원에게swift3에서 모호한 참조

모호한 참조 "/"

let rateForPeriod = interestRate!/Double(100)/Double(K.monthsEachYear) 
+0

'interestRate'의 유형? –

+0

이중형 형 –

+0

이렇게 쓰면 오류가 사라집니다. var rateForPeriod = interestRate!/Double (100) rateForPeriod = rateForPeriod/Double (K.monthsEachYear) 이 문제를 해결하는 올바른 방법이 있습니까? –

답변

0

, 내가 사용하는 것이 옵션 interestRate전무인지 여부를 확인하기 위해 바인딩.

let interestRate: Double? = 0.4 

if let interestRate = interestRate { 
    let rateForPeriod = interestRate/Double(100)/Double(1) 
} 
1

축하합니다! 방금 ​​컴파일러에서 버그를 발견했을 수 있습니다!

이 실패 :

let optional: Double? = 1 
let result = optional!/Double(1)/Double(1) 

이 작동 :

let optional: Double? = 1 
let unwrapped = optional! 
let result = unwrapped/Double(1)/Double(1) 

이 실패

let rateForPeriod = (Double(1) as Double?)!/Double(1)/Double(1) 

하지만이 작품을

의이 코드의 몇 가지 변화를 시도하자 :

let rateForPeriod = ((Double(1) as Double?)! as Double)/Double(1)/Double(1) 

그래서이 너무 작동합니다

새로운 옵션 랩핑 규칙의 부작용 (아마도 버그) 것 같다
let optional: Double? = 1 
let rateForPeriod = optional! as Double/Double(1)/Double(1) 

.

let optional: Double? = 1 
let rateForYear = optional!/Double(1) 
let rateForPeriod = rateForYear/Double(1) 

우리는 무엇을해야합니까 : 예상대로 한 번에 하나의 부서를하고 작동하는지

주? 당신이 interestRate는 선택하지 않을 수 있도록 가드 절을 사용하거나이 같은 기본 값을 제공 할 수있는 경우

  • 파일 버그 리포트
  • 정지 힘 풀기 일

시도를 확인합니다 : let rate = interestRate ?? 0.