iOS 응용 프로그램에서 Reflection 라이브러리를 가져오거나 Swift Package Manager 방식의 라이브러리를 iOS 응용 프로그램에 배치하는 방법

개요

  • 어느 날struct의 대상에 대해 문자열 소양의 속성 이름을 get/set 값으로 사용하려고 합니다.(Key-Value Coding)
  • 프로그램 라이브러리가 있는 것 같아요.
  • // Retrieves the value of `person.firstName`
    let firstName: String = try get("firstName", from: person)
    
    // Sets the value of `person.age`
    try set(36, key: "age", for: &person)
    
    이렇게 하면 get/set이 아주 편리합니다.
  • 그런데 Reflection은 Reflection에서 생산한 거예요.
  • Swift Package Manager는 CocoaPodsCarthage와 마찬가지로 라이브러리 종속성을 관리하는 도구이지만 iOS는 현재 지원되지 않습니다...
  • 하지만 iOS도 편입되기 때문에 Swift Package Manager 시위 행진이 그걸 시도해 본 ···가 이 기사가 되었다.
  • 컨디션

  • Swift4.1
  • Xcode9.3
  • 절차.


    다음은 라이브러리에 넣을 Xcode Project 작성 Target Project입니다.

    1. 미리 준비

    sudo gem install xcodeproj
    
    cd path/to/適当な場所
    git clone https://github.com/j-channings/swift-package-manager-ios.git
    cd swift-package-manager-ios
    
    # デモに入っているscript等を流用したい
    cp generate-dependencies-project.rb path/to/TargetProject
    cp Package.swift path/to/TargetProject # Swift Package Manager用の依存関係を記述するファイル
    cp -r .deps-sources path/to/TargetProject
    

    2. path/to/TargetProject/Package.swift로 가져올 프로그램 라이브러리에 대한 정보 쓰기


    이번에는 Reflection을 가져오려고 다음 파일을 만들었습니다.
    // swift-tools-version:4.0
    // The swift-tools-version declares the minimum version of Swift required to build this package.
    
    import PackageDescription
    
    let package = Package(
        name: "Dependencies",
        products: [
            // Products define the executables and libraries produced by a package, and make them visible to other packages.
            .library(
                name: "Dependencies",
                type: .static,
                targets: ["Dependencies"]),
        ],
        dependencies: [
            // Dependencies declare other packages that this package depends on.
            .package(url: "https://github.com/Zewo/Reflection.git", from: "0.16.0"),
        ],
        targets: [
            // Targets are the basic building blocks of a package. A target can define a module or a test suite.
            // Targets can depend on other targets in this package, and on products in packages which this package depends on.
            .target(
                name: "Dependencies",
                dependencies: ["Reflection"],
                path: ".deps-sources"
            )
        ]
    )
    
    

    3. 가져오려는 라이브러리를 포함하는 xcodeproj 생성

    cd path/to/TargetProject
    ruby generate-dependencies-project.rb # => Dependencies.xcodeproj/ が生成される
    

    4. Dependencies.서브 프로젝트로 xcodeproj 추가

  • Xcode를 통해 Target Project를 열고 왼쪽 탐색 영역에서 Dependencies를 엽니다.xcodeproje 포기
    swift-package-manager-ios
  • General->Linked Frameworks와 Libraries+에 "Refleaction.frame work"추가
  • import Reflection에 넣고 건물을 통과해야 합니다!
  • 이상
    Special Thanks:

    좋은 웹페이지 즐겨찾기