美文网首页
GraphQL-iOS的配置(Swift)

GraphQL-iOS的配置(Swift)

作者: Jux2020 | 来源:发表于2020-01-13 14:47 被阅读0次

    参考: https://www.apollographql.com/docs/ios/ 官方文档
    GraphiQL工具:https://n1kqy.sse.codesandbox.io/

    首先 pod "Apollo"

    导入完之后打开项目(下图中的项目是我已经配置好了的,所以有些没有的文件和脚本不用管)

    1.png

    首先按照上图中的顺序依次选择 添加一个新脚本,并把名称改为 Apollo CLI,再拖动到DependenciesCompile Sources之间,如下图

    2.png
    3.png

    再在脚本的文本框粘贴:(这个意思是下载服务器的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 文件

    4.png

    把它拖到项目里,可以不勾选Add to target (因为它只用于生成添加到target的代码)

    然后可以在 GraphiQL工具:https://n1kqy.sse.codesandbox.io/ 的网站上输入以下内容,点击运行。会得到等下在项目里要请求的数据,可用做对比

    query LaunchList {
      launches {
        cursor
        hasMore
        launches {
          id
          site
        }
      }  
    }
    
    image.png

    再回到Xcode里,新建一个空文件模板,命名为 LaunchList.graphql,将其保存在与schema.json文件相同的级别目录(LaunchList是上面你创建的模型的名字)

    image.png

    将上面GraphiQL中输入的内容复制粘贴到.graphql文件中

    接下来回到刚才添加脚本的地方,把最后一行注释掉(前面输入一个#),然后在下面粘贴下面的代码

    "${SCRIPT_PATH}"/run-bundled-codegen.sh codegen:generate --target=swift --includes=./**/*.graphql --localSchemaFile="schema.json" API.swift
    

    编译一下,schema.json同一目录下会出现一个API.swift,将它拖入到xcode中,并且勾选Add to target

    打开API.swift文件,会看到里面的结构和LaunchListQuery是匹配的。如果在LaunchList.graphql中注释掉id属性,再次编译,API.swift文件里的id也随之不见了。

    这一系列操作完成后,现在你的项目目录应该是这样的,多了红框中的3个文件

    image.png

    之后就可以开始用代码进行测试了

    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)")
      }
    }
    
    

    如果一切没什么问题的话控制台会打印类似下面的内容:

    image.png

    OK,这样就集成完毕了,实际使用的话,只需把脚本和代码里的服务器地址模型属性改为自己的就行了, 更多的操作请自行查看官方文档

    相关文章

      网友评论

          本文标题:GraphQL-iOS的配置(Swift)

          本文链接:https://www.haomeiwen.com/subject/itrmactx.html