參考: https://www.apollographql.com/docs/ios/ 官方文檔
GraphiQL工具:https://n1kqy.sse.codesandbox.io/
首先 pod "Apollo"
導(dǎo)入完之后打開項目(下圖中的項目是我已經(jīng)配置好了的拳亿,所以有些沒有的文件和腳本不用管)
首先按照上圖中的順序依次選擇 添加一個新腳本,并把名稱改為 Apollo CLI
愿伴,再拖動到Dependencies
和Compile Sources
之間肺魁,如下圖
再在腳本的文本框粘貼:(這個意思是下載服務(wù)器的schema.json文件)
SCRIPT_PATH="${PODS_ROOT}/Apollo/scripts"
cd "${SRCROOT}/${TARGET_NAME}"
"${SCRIPT_PATH}"/run-bundled-codegen.sh schema:download --endpoint="https://n1kqy.sse.codesandbox.io/"
編譯代碼,完成后項目文件夾里會多一個 schema.json
文件
把它拖到項目里隔节,可以不勾選Add to target
(因為它只用于生成添加到target的代碼)
然后可以在 GraphiQL工具:https://n1kqy.sse.codesandbox.io/ 的網(wǎng)站上輸入以下內(nèi)容鹅经,點擊運行。會得到等下在項目里要請求的數(shù)據(jù)怎诫,可用做對比
query LaunchList {
launches {
cursor
hasMore
launches {
id
site
}
}
}
再回到Xcode里瘾晃,新建一個空文件模板,命名為 LaunchList.graphql
幻妓,將其保存在與schema.json
文件相同的級別目錄(LaunchList是上面你創(chuàng)建的模型的名字)
將上面GraphiQL中輸入的內(nèi)容復(fù)制粘貼到.graphql
文件中
接下來回到剛才添加腳本的地方蹦误,把最后一行注釋掉(前面輸入一個#),然后在下面粘貼下面的代碼
"${SCRIPT_PATH}"/run-bundled-codegen.sh codegen:generate --target=swift --includes=./**/*.graphql --localSchemaFile="schema.json" API.swift
編譯一下,schema.json
同一目錄下會出現(xiàn)一個API.swift
强胰,將它拖入到xcode中舱沧,并且勾選Add to target
打開API.swift
文件,會看到里面的結(jié)構(gòu)和LaunchListQuery
是匹配的偶洋。如果在LaunchList.graphql
中注釋掉id
屬性熟吏,再次編譯,API.swift
文件里的id
也隨之不見了涡真。
這一系列操作完成后分俯,現(xiàn)在你的項目目錄應(yīng)該是這樣的,多了紅框中的3個文件
之后就可以開始用代碼進行測試了
class Network {
static let shared = Network()
private(set) lazy var apollo = ApolloClient(url: URL(string: "https://n1kqy.sse.codesandbox.io/")!)
}
···
Network.shared.apollo.fetch(query: LaunchListQuery()) { result in
switch result {
case .success(let graphQLResult):
print("Success! Result: \(graphQLResult)")
case .failure(let error):
print("Failure! Error: \(error)")
}
}
如果一切沒什么問題的話控制臺會打印類似下面的內(nèi)容:
OK,這樣就集成完畢了哆料,實際使用的話缸剪,只需把腳本和代碼里的服務(wù)器地址、模型屬性改為自己的就行了, 更多的操作請自行查看官方文檔