実現したいこと
SwiftのPackageを使用してローカルに自作ライブラリをまとめていこうと思い、テスト用にアプリとパッケージを作成してみたのですが、そのパッケージに外部の依存パッケージを追加するとimportでNo Such Moduleとなり解決できていません。
設定や手順が抜けていたら教えていただきたいです。
手順
- Xcode でmacOSのコンソールアプリのプロジェクト(SpmTest)を作成
- File > New > Package で MyLibraryパッケージを追加 (Add ToでSpmTestを選択)
- (このままだとビルドエラーが出ていたので、Framework and LibrariesにMyLibraryを追加)
- MyLibraryのPackage.swiftのdependenciesにSwiftyJSONを追加
- MyLibraryにSwiftyJSONを呼び出すコードを追加
- SpmTestからMyLibraryを使用すると、SwiftyJSONのimportがNo such moduleになる
ソースコード
Package.swift
Swift
1import PackageDescription 2 3let package = Package( 4 name: "MyLibrary", 5 products: [ 6 .library( 7 name: "MyLibrary", 8 targets: ["MyLibrary"]), 9 ], 10 dependencies: [ 11 // これを追加 12 .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "5.0.1"), 13 ], 14 targets: [ 15 .target( 16 name: "MyLibrary", 17 dependencies: []), 18 .testTarget( 19 name: "MyLibraryTests", 20 dependencies: ["MyLibrary"]), 21 ])
MyLibrary/MyLibrary.swift
Swift
1import SwiftyJSON // <- No such module 'SwiftyJSON' 2 3public struct MyLibrary { 4 public init() {} 5 6 public func greeting() { 7 let text = "{\"greeting\": \"Hello World!!\"}" 8 let json = JSON(parseJSON: text) 9 print(json["greeting"].string ?? "No greeting") 10 } 11}
SpmTest/main.swift
Swift
1import Foundation 2import MyLibrary 3 4MyLibrary().greeting()
試したこと
以下を試してみましたが効果ありませんでした。
- File > Package > Reset Package Caches
- Product > Clean Build Folder
補足情報
- Project NavigatorのPackage Dependenciesには"SwiftyJSON 5.0.1”が表示されています。
- JSONオブジェクトを使用する際にコード補完は効いているので、Xcodeはライブラリを認識しているように思えます。
コンソールアプリだからかも? .app にならないし…。

回答1件
あなたの回答
tips
プレビュー