2016-10-28 4 views
1

Any 유형의 변수가 선택 사항인지 여부를 판별하려고 시도 중이며 선택 해제가 필요한 경우이를 처리해야합니다. 이것이 가능한가? 이 코드는 내가 성취하려는 것을 설명합니다. 나는 선택 사항 일반적이며, 나는 그것이 코딩있는 방법은 내가 얻을 수있었습니다 해결신속한 변수 언 래핑 선택 사항?

extension Serializable { 
    public func serialize() -> [String: Any] { 
     var result = [String: Any]() 
     let mirror = Mirror(reflecting: self) 

     for child in mirror.children { 
      guard let label = child.label else { continue } 

      if let optional = child.value as? Optional { 
       if case Optional.some(let value) = optional { 
        result[label] = value 
       } 
      } 
      else { 
       result[label] = child.value 
      } 
     } 

     return result 
    } 
} 

답변

0

extension Serializable { 
    public func serialize() -> [String: Any] { 
     var result = [String: Any]() 
     let mirror = Mirror(reflecting: self) 

     for child in mirror.children { 
      guard let label = child.label else { continue } 

      switch child.value { 
      case let serializable as Serializable: 
       result[label] = serializable.serialize() 

      case let optional as Optional<Any>: 
       if case .some(let value) = optional { 
        result[label] = value 
       } 

      default: 
       result[label] = child.value 
      } 
     } 

     return result 
    } 
} 
를 작동 할 수있는 경우 궁금거야 일이 아니라고 이해
관련 문제