2016-08-18 3 views
2
# Let's say I've got the following typealias 
public typealias DateRange = (from: NSDate?, to: NSDate?) 

# And use it here 
var selectedDateRange: DateRange = (nil, nil) 

패턴 일치를 사용하여 값을 가져 와서 패턴 일치를 사용하여 래핑 할 수 있습니까?패턴 일치가 0이 아니면 일치하지 않음

# I can check vs. `nil` like so: 

if case (nil, nil) = segmentControl.selectedCustomDateRange { 
    print("Damn, nil!") 
} 

# And I want something shorter than 
if let from = segmentControl.selectedDateRange.from, 
    let to = segmentControl.selectedDateRange.to 
{ 
    model.setPeriod(from, to: to) 
} 

의견이 있으십니까?

답변

3

당신은 패턴 매칭 및 x? 옵션 패턴 if를 사용할 수 있습니다

위,하지만 서로 다른 유사
if case let (from?, to?) = selectedDateRange { 
    model.setPeriod(from, to: to) 
} 
+0

아! 고맙습니다. 나는'(from : NSDate ?, to : NSDate?) '와 같은 변형을 시도했으나 그렇게하지 못했습니다. – netigger

1

...

guard case let (from?, to?) = selectedDateRange else { 
    print("Damn, at least one nil!") 
    return 
} 
model.setPeriod(from, to: to)} 
+0

감사합니다. 상황에 따라 다른 솔루션이 필요하며 간혹 가드가 선호되기도합니다. – netigger

관련 문제