2017-09-21 2 views
0

가드 문에서 'nextPage'라는 함수를 호출하려고하는데 '()'이 'Bool'으로 변환 할 수 없다는 말입니다. 나는 그것이 함수를 호출 할 수있는 적절한 장소 아니기 때문에,이 기능(Swift) 가드 문의 호출 ​​기능

@IBAction func nextPressed(_ sender: Any) { 
    let geoCoder = CLGeocoder() 
    geoCoder.geocodeAddressString(address) { (placemarks, error) in 
     guard 
      let placemark = placemarks?.first, 
      let latVar = placemark.location?.coordinate.latitude, 
      let lonVar = placemark.location?.coordinate.longitude, 
      nextPage() // Error - '()' is not convertible to 'Bool' 
      else { 
       print("no location found") 
       return 
     } 
    } 
} 

답변

2

같은 것을해야 가드 문은 특정 조건이 충족되었는지 확인하는 데 사용됩니다. 해당 명령문에서 true 또는 false를 반환하지 않는 함수를 넣을 수 없습니다.

참조 : https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html

내가 무엇을 달성하려고하는 것은

@IBAction func nextPressed(_ sender: Any) { 
     let geoCoder = CLGeocoder() 
     geoCoder.geocodeAddressString(address) { (placemarks, error) in 
      guard 
       let placemark = placemarks?.first, 
       let latVar = placemark.location?.coordinate.latitude, 
       let lonVar = placemark.location?.coordinate.longitude 
       else { 
        print("no location found") 
        return 
      } 

      // will only get executed of all the above conditions are met 
      nextPage() // moved outside the guard statement 

     } 
} 
이라고 생각
0

당신은 부울 값을 반환하거나 가드 조건 문 내부에 그런 일을하지 않는 함수를 호출해야 하나에게 전화를하기 위해 어떻게해야합니까 무엇. 당신은

guard variable != nil else { 
    //handle nil case 
} 

// continue work with variable, it is guaranteed that it’s not nil.