方式一、使用CocoaPods添加Alamofire依赖
1. 安装CocoaPods(一种第三方依赖管理工具)
- 网址:COCOAPODS
- 打开电脑上的
终端(Terminal)
- 在
终端
输入COCOAPODS
官网提供的安装命令:sudo gem install cocoapods
(如下图所示)
- 终端工具上会要求输入电脑密码,然后等待安装(如果有VPN的话,可能会更快,安装完成后类似下图)
2. 在项目中安装Alamofire
- 在
终端
工具中使用命令语句
定位到自己的项目文件夹下
cd+空格+路径
或者
cd+空格,然后打开访达,将自己的项目直接拖到终端中
-
终端
工具上输入命令pod
,出现如下所示的一堆代码就说明CocoaPods
已经成功安装了
-
终端
工具上输入命令pod init
,用于生成Podfile
文件
(可以输入ls
查看是否有Podfile
文件,也可以直接打开访达
查看)
-
终端
工具上输入命令vi Podfile
或者vim Podfile
,打开Podfile
文件,然后对其修改(对终端
各种命令
不熟悉可以直接在访达
中双击打开这个文件)
-
修改
Podfile
文件来添加自己想要的依赖
(前面有#
的都是被注释
的)
- 修改
platform
信息(我这里的14.0就是我项目中iOS的版本信息)
# platform :ios, '9.0'
➡️
platform :ios, '14.0'
2. 添加Alamofire
依赖
pod 'Alamofire', '~> 5.4'
这里的依赖语句是从
Alamofire
项目的官网获取的
网址:Alamofire
Podfile
中没用的注释
可以都删去,最后修改后的Podfile
文件内容类似下图
终端
工具中输入命令pod install
,安装Podfile
文件中自己添加的依赖(Alamofile)
,安装成功后类似下图
- 使用
ls
或者直接在访达
查看自己的项目中新增的文件
- 双击
后缀
为xcworkspace
的文件打开项目(否则会报错
)
方式二、使用Xcode自带的Swift Package Manager(SPM)添加依赖
自从
Xcode11
开始,Apple
开发了自己的包管理工具并内置在Xcode
中,随着Xcode
版本的迭代,这一自带工具正逐步完善强大。
-
打开
Swift Package Manager(SPM)
-
点击上图中的➕,出现类似下图的弹窗(随着Xcode版本的更新,该弹窗内容会有所变化)
-
在上图中右上角的搜索框中输入下图中红框里的链接
-
在自己要添加的
git项目
中找到类似下图的部分
-
点击
Add Package
简单的使用Alamofire
- 准备一个数据结构
struct PostList: Codable {
var list: [Post]
}
struct Post: Codable,Identifiable {
let id: Int
let avatar: String
let vip: Bool
let name: String
let date: String
var isFollowed: Bool
let text: String
let images: [String]
var commentCount: Int
var likeCount: Int
var isLiked: Bool
}
- 发起网络请求
import SwiftUI
import Alamofire//使用Alamofire就必须导入
struct ContentView: View {
@State private var text = ""
var body: some View {
VStack(content: {
Text(text)
.font(.title)
Button(action: {
self.loadData()
}, label: {
Text("Load")
})
.padding(.bottom, 10)
Button(action: {
self.text = ""
}, label: {
Text("Clear")
})
})
}
func loadData() {
//准备一个url
let url = "https://github.com/xiaoyouxinqing/PostDemo/raw/master/PostDemo/Resources/PostListData_hot_1.json"
//使用Alamofile发起请求
AF.request(url).responseData(completionHandler: {response in
//response.result为枚举类型,所以需要使用switch
switch response.result {
//使用let,后面就能使用临时变量
case let .success(data):
guard let postList = try? JSONDecoder().decode(PostList.self, from: data) else {
updateText("Can not decode data.")
return
}
updateText("the data's count: \(postList.list.count)")
break
case let .failure(error):
updateText(error.localizedDescription)
break
}
})
}
func updateText(_ text: String) {
self.text = text
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我的学习视频连接:BBCo - iOS开发入门教程 网络请求 Lesson 12 - 1 CocoaPods Alamofire