2016-09-29 3 views
0

다음 코드를이 라이브러리 (https://github.com/dankogai/swift-json)에서 Swift 3 호환 코드로 변환하려고합니다.AnyObject Swift 2에서 3으로 마이그레이션 JSON 오류

해결해야 할 몇 가지 오류가 있습니다. 나는 지금이 줄에 붙어있다.

extension JSON : Sequence { 

내가 오류가 '유형'JSON은 시퀀스 '

그것의 전체 문맥은 다음과 같습니다'프로토콜을 준수하지 않는 '입니다. 소스 코드에서 시퀀스가 ​​프로토콜 준수 여부를 확인할 수있는 프로토콜로 존재했는지 여부를 확인했습니다. 스위프트 2에서이 기능이 작동한다는 것을 알고 있습니다.

extension JSON : Sequence { 
    public func generate()->AnyIterator<(AnyObject,JSON)> { 
     switch _value { 
     case let o as NSArray: 
      var i = -1 
      return AnyIterator { 
       i=i+1 
       if i == o.count { return nil } 
       return (i, JSON(o[i])) 
      } 
     case let o as NSDictionary: 
      var ks = Array(o.allKeys.reversed()) 
      return AnyIterator { 
       if ks.isEmpty { return nil } 
       if let k = ks.removeLast() as? String { 
        return (k, JSON(o.value(forKey: k)!)) 
       } else { 
        return nil 
       } 
      } 
     default: 
      return AnyIterator{ nil } 
     } 
    } 
    public func mutableCopyOfTheObject() -> AnyObject { 
     return _value.mutableCopy as AnyObject 
    } 
} 

어떻게 든 연결되어 있으면 return 문도 오류가 발생합니다.

return (i, JSON(o[i])) 

및 ...

return (k, JSON(o.value(forKey: k)!)) 

모두 동일한 오류, 가 (문자열, JSON) '형식을 반환하기'(AnyObject, JSON) '타입의 반환 식을 변환 할 수 없습니다'를 줄? '

리턴 문에서 AnyObject에 값 i와 k를 캐스트해야한다고 가정합니다. 나는 확실하지 않다.

다음은 나에게 제공되는 제안에 대한 자세한 스크린 샷입니다. 코드를 변경하는 방법을 아직 알지 못합니다.

enter image description here

+0

'Any Any'를'Any'로 바꾸어보세요 – vadian

답변

1

창 (I, JSON (O [I])) ===> 창 (I AnyObject, JSON (오르토 [I])) swift3에

데이터 유형은 더 많이 swift2보다 엄격한.

+0

이것도 시퀀스 부분을 수정합니까? 나는 지금 시험해 볼 것이다. –

+0

시퀀스 오류가 여전히 어떤 시퀀스를 따르지 않는다고 말하는가? –

+0

당신은 반환 오류를 해결하는 데 도움이되었지만, 고마워요! –

관련 문제