如何将库导入CLI中使用的swift代码?

问题描述 投票:0回答:1

What I want to do

我想尝试通过CLI上的swift库通过API获取子文件。我正在使用Alamofire库,但我无法理解如何导入swift库。

也许在导入之前需要一些任务(构建?链接?)但我找不到如何记录......你能教我怎么做吗?

Problem

$ swift getAPI.swift
getAPI.swift:1:8: error: no such module 'Alamofire'
import Alamofire
       ^

Sourcecode

import Alamofire

func getArticles(){
  Alamofire.request(.GET, "https://qiita.com/api/v2/items")
    .responseJSON { response in
      print(response.result.value )
    }
}

getArticles()
swift command-line-interface alamofire
1个回答
5
投票

这应该有助于运行一次性脚本和使用Swift REPL。但是,为了构建命令行的简单工具,我建议使用Swift Package Manager,因为它会为您处理链接和依赖管理。


要将脚本代码链接到Alamofire库,swift编译器必须知道库的位置。默认情况下,它会搜索/ Library / Frameworks,但我们可以提供选项来告诉它在哪里查看。检查swift --help,我们看到以下选项(以及许多其他选项)。

USAGE: swift [options] <inputs>

OPTIONS:
  -F <value>    Add directory to framework search path
  -I <value>    Add directory to the import search path
  -L <value>    Add directory to library link search path

您提供的目录必须包含要导入的库的已编译二进制文件。

  • 要导入.swiftmodule二进制文件,请使用-I
  • 要导入.framework二进制文件,请使用-F
  • 要链接到libsqlite3.0.dylib等库,请使用-L

我认为Carthage和CocoaPods将构建框架,而Swift Package Manager将构建.swiftmodules。这三个人都应该把二进制文件放在非常可预测的位置。不同种类的二进制文件可能都是相同的,这没关系。

总而言之,如果使用SPM构建,您的调用可能如下所示:

$ swift -I .build/debug/

但是,如果您使用Carthage管理依赖项,它可能看起来像这样:

$ swift -F ./Carthage/Build/iOS

为了进一步阅读,我发现这些资源很有用:

更新:Swift包管理器现在也可以为您处理这个问题!如果您将脚本编写为包并包含一堆依赖项(如Alamofire),您现在可以在REPL中测试它们。只需将cd放入您的包目录并使用swift run --repl启动它。有关详细信息,请参阅the swift.org blog

© www.soinside.com 2019 - 2024. All rights reserved.