내가 가드를 사용하여 좋아하고 나는뿐만 아니라 유형 체킹을위한 where
을 사용하려는 상황에 걸쳐 온 :신속
guard let status = dictionary.objectForKey("status") as! String! where status is String else { ...}
엑스 코드는 항상 진실 것을 제대로 뿌려줍니다.
내 목표는 가드 뒤에 한 줄에 언 래핑 된 문자열을 갖는 것입니다.
어떻게하면됩니까?
내가 가드를 사용하여 좋아하고 나는뿐만 아니라 유형 체킹을위한 where
을 사용하려는 상황에 걸쳐 온 :신속
guard let status = dictionary.objectForKey("status") as! String! where status is String else { ...}
엑스 코드는 항상 진실 것을 제대로 뿌려줍니다.
내 목표는 가드 뒤에 한 줄에 언 래핑 된 문자열을 갖는 것입니다.
어떻게하면됩니까?
아마도 이걸 원하니? 당신이 사용하는 경우
guard let status = dictionary["status"] as? String else {
// status does not exist or is not a String
}
// status is a non-optional String
위대한, 감사합니다! 당신이 먼저 왔으니 수표를 줄거야. –
as! String!
당신은 당신이 당신의 사전 내부의 객체가 String
해야을 알고 그 스위프트을 말한다. 런타임에 객체가 String
이 아닌 경우 Swift가 캐스트 예외를 발생하도록합니다. 따라서 수표의 where
부분이 실패하지 않는 이유는 status
이 String
이거나 where
절 앞에 예외가 발생하는 것입니다.
대신 as!
대신 as?
연산자를 사용하면 선택적인 캐스트를 수행 할 수 있습니다. guard let
과 결합하면이 방법을 통해 문자열을 확인하려는 경우
guard let status = dictionary.objectForKey("status") as? String else { ... }
... // If you reached this point, status is of type String, not String?
이 표시됩니다. – Wain
죄송합니다. 이미 String임을 알고 있기 때문에 캐스트하려고합니다. –
@lukas_o 아래의 "Shadow Of"가 올바른 답변입니다. – Fogmeister