2016-08-18 10 views
-2

을 확인 전무는 그래서 스위프트의 구문을 다음과 같은 사항에 대해 1 라이너를 파악하는 데 실패하고 나에게 운전 너트 :스위프트 선택적 항목

if lastProfile == nil || lastProfile.id == profile.id { 
     useProfile(profile) 
     lastProfile = profile 
} 

지금 내가 그것을 체인 수 있지만 여전히 2- 끝장 참조 3 ifs. 나는 그것을 밖으로 포장 할 수 있었다 그러나 나는 다시 2-3 ifs로 끝난다 ... 단지 1 개의 급습에서 이것을하는 것이 가능한가?

편집 : (우리가 못생긴 동의하지만)

내 동료가 대안을 발견

if !(latestProfile != nil && latestProfile!.voiceId != profile.voiceId) { 

} 

위보다 더 좋은 방법이 있나요?

+0

귀하의 마지막 프로필은 이미 null 가능합니다. 왜 최신 프로필입니까? voiceId = profile.voiceId? – Brduca

+0

@ 브루 디아 만약 그것이 nul이거나 음성 id에 일치하는 것이 있으면 차단을 입력하고 싶습니다. – Warpzit

+3

나는 밀도가 있어야합니다. 당신의 첫 번째 예는 무엇이 잘못되었으며 두 번째 예가 더 좋은가? – vacawama

답변

1

솔루션 그냥 ? 거리 : lastProfile이 전무하거나 lastProfile 및 프로필 ID가 같은 경우 때

if lastProfile == nil || lastProfile?.id == profile.id { 
    print("true") 
    lastProfile = profile 
} 

이 "true"로 인쇄합니다. 그렇지 않으면 아무 것도 인쇄하지 않습니다.

+0

G 젠장. 몇 달 전에 받았던 오류로 인해 == nil을 사용할 수 없다는 것이 내 머리 속에 들어갔다. – Warpzit

0

lastProfile하는 경우는 let lastProfile: Profile? = ...로 선언하고, 예를 들어 ID가 또한으로 사용할 수있는 선택적으로 선언한다 : 그것은 옵션 체인이라고하고 신속한 docs에 대해 읽을 수 있습니다

if let lastProfileId = lastProfile?.id { 
    // lastProfile is not nil and id is not nil 
} 
else { 
    // lastProfile is nil or lastProfile.id is nil 
} 

.

+0

구문을 살펴보면 1 블록에서 완료되지 않습니다 ... – Warpzit

-1
if let recentProfile = latestProfile where recentProfile.voieId != profile.voiceId { 
    useProfile(profile) 
    lastProfile = profile 
} 
+0

블록이 nil이면 입력합니까? 아니오이면 ... 더 좋지 않습니다. – Warpzit

+0

죄송합니다 귀하의 질문에 오해, 위의 답변 jboi에 의해 좋은 –

+0

그게 전부입니다. 이 바보짓을 도와 줘서 고마워. :) (나는 투표하지 않았다.) – Warpzit