내 회사의 iOS 앱간에 공유되는 유틸리티 프로젝트를 만들려고합니다. 나는 이전 직장에서이 일을 해왔지만 스위프트보다 먼저 선발했다. Obj-C가 아닌 모든 구현을 신속하게 유지하고 싶습니다.Swift 정적 라이브러리
this guide을 사용하여 cocoapod 경로를 시도했지만 기본 프로젝트에서 유틸리티 코드를 사용하기 전에 빌드 문제가 발생했습니다.
저는 '코코아 터치 정적 라이브러리'로 언어를 신속하게 사용하려고 노력하고 있습니다. 아직 운이 없습니다. 내 .xcodeproj
파일을 내 작업 영역으로 가져 왔습니다. 지금은 하나의 .swift
파일과 XCode에 의해 생성 된 헤더 파일이 있습니다. 프로젝트 이름이 IosUtilsTest
입니다. 특히
, 내 테스트 폴더의 유틸리티 파일 :
extension UIBarButtonItem {
class func flexible() -> UIBarButtonItem {
return UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
}
}
그리고 내 응용 프로그램에서
:import IosUtilsTest
....
toolbar.items = [UIBarButtonItem.flexible(), centeredButton, UIBarButtonItem.flexible()]
....
내가 flexible
이 존재하지 않는 컴파일러 오류가 발생합니다.
나는 브리징 헤더에 <IosUtilsTest/IosUtilsTest-swift.h>
과 <IosUtilsTest/IosUtilsTest.h>
을 포함시켜 보았습니다.
기본적으로 확장 프로그램이 빌드에 포함되지 않은 것처럼 보입니다. FWIW - 특수 빌드 플래그가 필요한 카테고리에 문제가 있다는 것을 기억합니다. 그래서 인스턴스화를 시도한 클래스 만 시도했지만 동일한 기본 오류였습니다.
이상적인 것은 아니지만 수용 가능한 해결 방법을 찾았습니다. util 프로젝트를 하위 모듈로 추가하고 Finder에서 내 신속한 파일이 들어있는 적절한 폴더를 내 응용 프로그램으로 드래그합니다. 적절한 그룹 등을 생성 할 것이므로 util 프로젝트에서 무언가를 업데이트하면 다음에 서브 모듈을 가져 오거나 리부팅 할 때 작업 영역에서 업데이트됩니다.아직'포드 인스톨'을하는 것만 큼 좋지는 않지만 받아 들일 것입니다. – cscott530
스위프트는 여전히 과감한 ** 변화를 겪고 있습니다. 먼지가 조금 안정화 될 때까지 Swift에 정적 라이브러리를 구축하는 것에 대해서는 권장하지 않습니다. 현재 Xcode 버전에서는 라이브러리의 언어로 Swift를 선택할 수 없습니다 (다른 모든 경우에는 가능). 애플이 "이봐, 너는 스위프트 도서관을 만들면 안된다!" – nhgrif
@nhgrif 그건 맞지 않아. 코코아 터치 프레임 워크의 언어로 Swift를 선택할 수 있습니다. 또한 Apple이 제공하는 경고는 바이너리, 특히 다른 버전의 Xcode로 빌드되고 다른 Swift 런타임이 임베드 된 타사 스위프트 바이너리에 관한 것입니다. 동일한 Xcode로 모두 동시에 빌드되는 경우 자체 프레임 워크는 타사와 마찬가지로 잘됩니다. 내 대답 읽기 ... 나는 그들을 사용하고 있으며 그들은 잘 작동합니다. – bandejapaisa