2020년에 Swift 2에서 5로 마이그레이션

5124 단어 painiosswift
작업: 2016년에 Swift 2를 사용하여 빌드하고 App Store에서 퇴출된 iOS 앱을 빌드하고 게시합니다.

지금은 2020년입니다. 2016년부터 Apple은 많은 새로운 요구 사항을 도입했습니다. 최신 Xcode로 응용 프로그램을 빌드해야 하지만 마지막 Xcode는 Swift 버전 4 미만에서는 작동하지 않습니다. 그러나 Swift 코드를 최신 버전으로 자동 변환하는 기능이 있습니다. 그러나 2nd 버전을 5th 버전으로 변환할 수는 없습니다. 2를 3으로, 3을 4로, 4를 5로 변환해야 합니다. 게다가 각 단계마다 다른 버전의 Xcode가 필요합니다.

일반적인 마이그레이션 단계


  • Xcode 설치
  • Xcode에서 자동으로 코드 변환
  • 라이브러리 업데이트
  • 수동 변경으로 작동하게 만들기

  • 2에서 3



    The official Swift 3 migration guide

    따라서 Swift 2 코드를 열고 컴파일하고 변환하려면 이전 Xcode 버전이 필요합니다. Swift 2의 유효한(최신) Xcode 버전은 Xcode 8.3.3 입니다. 불행히도 Xcode 8.3.3은 최신 OSX Catalina에서 작동하지 않습니다. 최소한 High Sierra 또는 이전 버전이 필요합니다. 이 투쟁은 VirtualBox 을 사용하여 해결되었습니다.

    올바른 OSX 및 Xcode가 설치되면 코드가 자동으로 변환됩니다. 도서관이 남아 있었다.

    우선 그 시기에 맞는 cocoa-pod CLI 버전이 있으면 좋다. 1.3.1입니다.

    sudo gem install cocoapods -v 1.3.1
    

    성공적인 라이브러리 업데이트의 핵심은 적합한 버전을 결정하는 것입니다. 이러한 정보가 Pod 페이지에 있으면 쉽습니다. 예를 들어 RappleProgressHUD의 경우 Swift 4 이상 버전에 대한 정보가 있습니다. 또 다른 방법은 Podspec 에서 시간별로 선택하는 것입니다. 2017년 말은 Swift 3에 적합합니다.

    3에서 4



    The official Swift 4 migration guide

    다음 단계는 Swift 3을 4로 변환하는 것입니다. Xcode 10.1 을 사용하여 수행할 수 있습니다.

    라이브러리는 위와 같은 방식으로 마이그레이션되었습니다.

    몇 가지 수동 변경 사항이 있습니다.

    부분 문자열
    그들은 범위를 처리하는 새로운 방법을 도입했습니다.

    스위프트 3

    s[x...y]
    

    스위프트 4

    String(
      s.substring(
        with: 
          s.index(s.startIndex, offsetBy: x)..
          <s.index(s.startIndex, offsetBy: y)
      )
    )
    

    명시적 캐스팅
    "Any"유형의 변수는 명시적으로 캐스트되어야 합니다.

    스위프트 3

    array: NSArray
    ..
    s = array[index]["id"] as? String
    

    스위프트 4

    s = (array[index] as! NSDictionary)["id"] as? String
    

    4에서 5



    The official Swift 5 migration guide

    마지막으로 Swift 4에서 5로 변환하는 것이 가장 쉽고 최신 Xcode 11에서 수행할 수 있습니다. 모든 코드는 자동으로 변환되었습니다. 위와 같이 라이브러리가 업데이트 되었습니다. 아이콘과 시작 화면이 새로운 크기에 추가되었습니다.

    세워짐. 게시됨. 이익. ;)

    Jesse orricoUnsplash의 사진

    좋은 웹페이지 즐겨찾기