首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用 Swift GraphQL

前言我一直在分享关于类型安全和在 Swift 构建健壮 API 更多内容。今天,我想继续探讨类型安全的话题,介绍 GraphQL。GraphQL 是一种用于 API 查询语言。...本周,我们将讨论 GraphQL 好处,并学习如何Swift使用它。基础知识首先介绍一下 GraphQL。GraphQL 是一种用于 API 查询语言。...GraphQL 自定义类型每个字段都必须声明其类型。默认情况下,每个字段都可以为 nil。带有感叹号字段不能为 nil。我使用星球大战 API 来向你展示本文中示例。让我们继续进行一些查询。...这个脚本下载模式并为你查询生成 Swift 类型。你可以在这个脚本轻松更改 GraphQL 端点以连接到你 GraphQL 后端。我们已准备好使用 ApolloGraphQL 项目。...在 Swift ,ApolloGraphQL 框架极大地简化了 GraphQL 查询和变更实现过程,自动生成 Swift 类型和缓存机制不仅提高了开发效率,还减少了样板代码编写。

12622

如何选择合适 django 版本使用

首先,是不是需要一个地方来查看 django 有没有新版本发布呢,请看: https://www.djangoproject.com/download/ 然后,该如何选择一个合适版本,是一股脑装最新版...(很肯能存在一些小问题,如:与其他库兼容性问题)还是有方法可寻呢,请看:     一般来说我们都选择在长期维护 django 版,即 LTS(Long Term Support) 版本。...官网有个图,很明显看到某些版本标记了 LTS: 从上图可以看出目前在维护 只有两个版本,3.2 版本(还没发布)将要加入 LTS: 1.11(Last version to support Python...2.7.) 2.2(我们 python3 就用 2.2 了,跟 1.11 语法上有些变化,比如:路由匹配模式) 安装时候指定版本安装就可以安装 LTS 版本(pip install django=

3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Swift Actors 使用如何及防止数据竞争

    Swift Actors 旨在完全解决数据竞争问题,但重要是要明白,很可能还是会遇到数据竞争。本文将介绍 Actors 是如何工作,以及你如何在你项目中使用它们。 什么是 Actors?...Swift Actors 可以保护他们状态免受数据竞争影响,并且使用它们可以让编译器在编写应用程序时为我们提供有用反馈。...此外,Swift 编译器可以静态地强制执行 Actors 附带限制,并防止对可变数据并发访问。...所有与同步访问有关逻辑都被隐藏在Swift标准库实现细节里。然而,最有趣部分发生在我们试图使用或读取任何可变属性和方法时候: Actors方法是隔离,以便同步访问。...,因为编译器会告诉你: 将不可变属性标记为 nonisolated 是多余 为什么在使用 Actors 时仍会出现数据竞争?

    2.5K10

    2020年了,跨平台开发框架现在怎样了?

    选择过多会令人头疼,这就是为什么我们只关注最突出跨平台移动开发框架原因:React Native, Flutter, NativeScript, 和Xamarin。...另外,使该框架脱颖而出是,如果你需要,React Native允许你使用Java、Objective-C或SWIFT编写部分原生模块来顺利处理复杂操作,如视频播放或图像编辑。...说到Flutter更新,最新稳定版本是在12月12日发布,根据官方发布说明,它合并了来自188个贡献者近2000个pull。例如,版本1.12.13包括改进: 重大API变动。...Beta版Web支持。 这不是一个完整清单,因为Flutter目标是让每年发布四个版本每一个版本都能为框架可用性提升一个台阶。...另外值得一提是,使用 NativeScript 开发人员也可以使用第三方库(CocoaPods 和 Android SDK),而无需包装。

    2.4K20

    跨平台应用框架_安卓前端框架

    选择过多会令人头疼,这就是为什么我们只关注最突出跨平台移动开发框架原因:React Native, Flutter, NativeScript, 和Xamarin。...另外,使该框架脱颖而出是,如果你需要,React Native允许你使用Java、Objective-C或SWIFT编写部分原生模块来顺利处理复杂操作,如视频播放或图像编辑。...说到Flutter更新,最新稳定版本是在12月12日发布,根据官方发布说明,它合并了来自188个贡献者近2000个pull。例如,版本1.12.13包括改进: 重大API变动。...Beta版Web支持。 这不是一个完整清单,因为Flutter目标是让每年发布四个版本每一个版本都能为框架可用性提升一个台阶。...另外值得一提是,使用 NativeScript 开发人员也可以使用第三方库(CocoaPods 和 Android SDK),而无需包装。

    2.6K20

    如何使用Python选择性地删除文件夹文件?

    问题1 问题描述:在一个文件夹,有着普通文件以及文件夹,那么我们如何做到删除全部文件夹而不删除文件呢? 如下图所示,我们想要删除test文件夹所有文件夹,而保留其他文件: ?...Version 1 看到这个问题第一刻,我想到是文件夹没有后缀名,其他文件有后缀名,而拥有后缀名则意味着文件名称里面会有.存在,我们就可以利用这个差别,来区分两者,进而实现问题描述功能。...我们可以看到,test文件夹文件已经全部删除。 ? Version 2.0 但是,后来仔细一想,上面这种方法却存在一个非常大问题,如果普通文件是没有后缀名,也就是文件名称不存在....接着,我又发现了文件夹和普通文件另外一个区别,也就是文件夹是可以使用os.chdir("file_name")这个命令,而普通文件则显然不行,会出现异常。...问题2 问题描述:我们如何做到删除一个文件夹空白文件夹,而不删除其他文件呢? ? 可以看出,问题2是问题1进阶版本,只需要在问题1代码基础上,增加一个判断文件夹是否空白语句即可。

    13.3K30

    聊聊移动端跨平台开发各种技术

    使用 C++ 实现非界面部分比较常见,所以这里就不重复介绍了,除了能提升性能和共用代码,还有人使用这种方式来隐藏一些关键代码(比如密钥),如果你不知道如何构建这样跨平台项目,可以参考 Dropbox...RoboVM RoboVM 可以将 Java 字节码编译为可在 iOS 下运行机器码,这有点类似 GCJ,但它具体实现是先使用 Soot 将字节码编译为 LLVM IR,然后通过 LLVM 编译器编译成不同平台下二进制文件...所以后来它又推出了 Tengu 这个专门针对 APP 开发工具,它比起之前方案更灵活些,本质上有点类似 C++ 公共库方案,只不过语言变成了 Swift/Objective-C,使用 Swift...JSX XML 差了不少,而且随着大家逐步接受 Swift,这种基于 Objective-C++ 方案恐怕没几年就过时了,所以 Facebook 押宝 React 是比较正确。...来试验,遇到问题就改回 Native 实现,风险可控,而用 NativeScript就不行了,这导致大家在技术选型时候不敢使用 NativeScript

    1.6K21

    聊聊移动端跨平台开发各种技术

    使用 C++ 实现非界面部分比较常见,所以这里就不重复介绍了,除了能提升性能和共用代码,还有人使用这种方式来隐藏一些关键代码(比如密钥),如果你不知道如何构建这样跨平台项目,可以参考 Dropbox...RoboVM RoboVM 可以将 Java 字节码编译为可在 iOS 下运行机器码,这有点类似 GCJ,但它具体实现是先使用 Soot 将字节码编译为 LLVM IR,然后通过 LLVM 编译器编译成不同平台下二进制文件...所以后来它又推出了 Tengu 这个专门针对 APP 开发工具,它比起之前方案更灵活些,本质上有点类似 C++ 公共库方案,只不过语言变成了 Swift/Objective-C,使用 Swift...JSX XML 差了不少,而且随着大家逐步接受 Swift,这种基于 Objective-C++ 方案恐怕没几年就过时了,所以 Facebook 押宝 React 是比较正确。...来试验,遇到问题就改回 Native 实现,风险可控,而用 NativeScript就不行了,这导致大家在技术选型时候不敢使用 NativeScript

    2.2K50

    深度测评 | 五大主流多端开发框架全面对比

    目前来看比较火应该是 Flutter,次之 RN,具体还要看企业应用场景和领域,AVM,Ionic,NativeScript 在不少企业和个人开发者使用率较高。 一,安装环境,开发工具对比。...ionic capacitor run ios -l --external 选择一个本地模拟器,之后就可以看到界面了,但是因为笔者本地 Xcode 是 11 版本,会报编译错误,所以需要升级到最新...140.82.114.9 codeload.github.com 使用 ns 命令创建 NativeScript 项目: ns create myNativescriptApp 选择创建一个 Vue...因为很多公司目前业务场景都是需要在不同 APP 里跑,所以是否支持多端对我们国内用户来说很重要,笔者特意增加了这一对比项。...其他框架 AVM 和 Ionic 各有优势,但是从使用体验,上手难度,社区情况来看,国内 AVM 肯定更适合国内开发者一些,毕竟有本土化,云端集成,而且 debug 体验也很惊艳。

    5.2K30

    【Linux 内核构建】如何查看 Linux 系统可以选择内核有哪一些?如何切换 Linux kernel 版本

    查看内核列表:在 grub 菜单,你可以看到所有已安装内核版本。每个条目代表一个内核版本和相关启动选项。 2....可以查看这个文件来了解所有可用内核版本: 这是 grub.cfg 信息,可以过滤一下。...grep menuentry /boot/grub/grub.cfg 这个命令会显示所有在 grub 菜单可用内核版本。...你可以列出这个目录文件来查看所有已安装内核版本: ls /boot 输出可能会类似于: 4....使用 dpkg 列出已安装内核(Debian/Ubuntu 系统) 如果你使用是 Debian 或 Ubuntu 系统,可以使用 dpkg 命令列出已安装内核包:

    9610

    跨平台开发框架到底哪家强?5款主流框架横向对比!

    目前来看比较火应该是 Flutter,次之 RN,具体还要看企业应用场景和领域,AVM,Ionic,NativeScript 在不少企业和个人开发者使用率较高。 一,安装环境,开发工具对比。... capacitor run ios -l --external 选择一个本地模拟器,之后就可以看到界面了,但是因为笔者本地 Xcode 是11版本,会报编译错误,所以需要升级到最新Xcode12...140.82.114.9 codeload.github.com 使用 ns 命令创建 NativeScript 项目: ns create myNativescriptApp 选择创建一个 Vue 模板空项目...因为很多公司目前业务场景都是需要在不同APP里跑,所以是否支持多端对我们国内用户来说很重要,笔者特意增加了这一对比项。...其他框架 AVM和 Ionic 各有优势,但是从使用体验,上手难度,社区情况来看,国内 AVM 肯定更适合国内开发者一些,毕竟有本土化,云端集成,而且debug体验也很惊艳。

    6.1K20

    Swift 类型占位符

    关于如何做到这一点初步想法可能是简单地将我们默认值传递给该主体初始化器,然后将结果存储在本地一个let声明属性(就像创建一个普通Int值时一样)。...>(0) 不过从 Swift 5.6 开始,这种情况就不存在了——因为我们现在可以使用一个类型占位符来表示我们主体Output类型,这让我们再次利用编译器为我们自动推断出该类型,就像在声明一个普通Int...>> { ... } 上面的函数使用了一个相当复杂泛型作为它返回类型,这可能是因为我们需要在多个地方中重复使用我们Resource类型,也因为我们选择使用幻象类型(phantom types...基于 Swift 5.6 版本不仅为我们节省了一些输入,而且由于 pdfSubject 类型现在完全来自 loadAnnotatedPDF 函数,这可能会使该函数(及其相关代码)迭代更加容易——...在这里,我们选择手动指定我们字典 Key 类型(为了能够使用点语法来指代枚举各种情况),同时为该字典使用一个类型占位符: enum UserRole { case local

    1.5K30

    Swift 类型占位符

    关于如何做到这一点初步想法可能是简单地将我们默认值传递给该主体初始化器,然后将结果存储在本地一个let声明属性(就像创建一个普通Int值时一样)。...>(0) 不过从 Swift 5.6 开始,这种情况就不存在了——因为我们现在可以使用一个类型占位符来表示我们主体Output类型,这让我们再次利用编译器为我们自动推断出该类型,就像在声明一个普通...>> { ... } 上面的函数使用了一个相当复杂泛型作为它返回类型,这可能是因为我们需要在多个地方中重复使用我们Resource类型,也因为我们选择使用*幻象类型*来指定我们当前处理是哪种...基于 Swift 5.6 版本不仅为我们节省了一些输入,而且由于 pdfSubject 类型现在完全来自 loadAnnotatedPDF 函数,这可能会使该函数(及其相关代码)迭代更加容易——...在这里,我们选择手动指定我们字典 Key 类型(为了能够使用点语法来指代枚举各种情况),同时为该字典使用一个类型占位符: enum UserRole { case local

    1.7K20

    干货 | 一波N折携程酒店Swift-Objc混编实践

    因为从此之后,Swift终于可以摆脱对编译器版本限制,不同版本Swift编译app无需再借助app内runtime就能和操作系统互相之间无缝通讯。...但这个设置似乎和我们之前理解ABI稳定有点冲突,ios12.2之前版本因为系统没有内置Swiftruntime和动态库,所以需要在app打入Swift runtime。...} ${include_dir} # 去掉xxx-Swift.h 文件头部注释编译器版本号 sed -i"" "s/^\/\/ Generated by Apple.*$/\/\/ Generated...原来swiftmodule是跟编译器版本强相关,不同版本编译器编译出来库是不能被互相兼容,也就是说Swift5.0虽然已经做到了运行时ABI stability,但还没有做到编译时模块稳定(Module...图2 比如,你用 Swift6编译器编译出了一个library,通过它swiftinterface文件,这个库就也可以在 Swift7编译器使用,如下图所示: ?

    1.4K31

    如何选择口子查、站点查、渠道查?解决使用遇到IP地址问题

    本文将介绍这三种工具优缺点,如何选择使用,以及使用过程可能遇到IP地址问题和解决方案。一、口子查是什么?(口子查)口子查是指通过在线问卷调查平台进行数据收集和分析方法。...但是,渠道查受数据来源和有效性限制,可能需要耗费较大时间和资源。四、如何选择口子查、站点查、渠道查?...在选择使用口子查、站点查、渠道查时,需要考虑以下因素:1.目的和需求:根据自己目的和需求,选择适合数据收集和分析方法,避免浪费时间和资源。...六、如何解决IP地址问题?...为了解决口子查、站点查、渠道查使用可能遇到IP地址问题,可以采取以下步骤:1.使用专业代理工具和服务(smart代理)如Smartproxy、Rola、Luminati等,实现IP地址轮换和更换

    2.1K41

    Kotlin 1.4-M1 现已发布!

    在以下示例,可以将 String 类型上 @Foo 注解发出到字节码,然后由库代码使用: 有关如何在字节码中发出类型注解详细信息,请参阅 Kotlin 1.3.70 版本博文相关部分。...在 build.gradle.kts 文件目标块内,现已支持 produceExecutable(),如果您想要在构建时生成 .js 工件,则必须使用它: 如果您要编写 Kotlin/JS 库,可以忽略...将声明导出到 JavaScript 使用 IR 编译器后端时,标记为公开声明将不再自动导出(即使名称毫无逻辑版本也不会)。...在同一个 Maven 坐标下发布时,Gradle 会根据用例自动选择正确工件:为旧编译器选择 js,为新编译器选择 klib。...查看如何执行此操作。 如果您想处理在安装该预览版之前创建现有项目,则需要在 Gradle 或 Maven 针对预览版配置您构建。 您可以从 Github 发布页面下载命令行编译器

    3.5K20

    Swift MainActor 使用和主线程调度

    如果您不熟悉 Swift Actors,我建议您阅读我文章SwiftActors 使用如何及防止数据竞争,全局Actors行为类似于Actors,我不会在这篇文章详细介绍Actors工作方式...如果你Xcode不支持,请升级到最新版本或者通过启用实验并发来工作。...在这里使用@MainActor属性可以让Swift编译器对我们代码进行性能优化。 选择正确策略 使用 actors 时选择正确策略很重要。...在某些情况下,如果数据请求方法也是从一个不需要在主线程上处理完成回调地方使用,这可能就没有意义了。 在这些情况下,让实现者负责调度到正确队列可能会更好。...它允许我们重用常见Actor,并使UI任务执行成为可能,因为编译器可以在内部优化我们代码。全局Actor可以用在属性、方法、实例和闭包上,之后编译器会确保要求在我们代码得到保证。

    3.1K10

    NativeScript工作原理

    NativeScript使用是最新稳定版本V8和JavaScriptCore。因此,NativeScript对ECMAScript规范支持情况与它使用JavaScript引擎完全相同。...NativeScript如何操作JavaScript引擎 V8之所以能够识别android对象是由于NativeScript runtime把它注入到了JavaScript运行环境。...NativeScript通过一个独立元数据处理过程明确了需要注入API,并且在Android和IOS编译阶段嵌入了所需元数据。...上文提到了NativeScript如何对V8引擎注入全局变量,接下来介绍如何通过回调函数实现在JavaScript代码调用C++代码。...通过以上内容,虽然我们知道了如何使用JavaScript代码调用原生API,但是如果针对每个不同平台都分别编写对应代码,仍然不能够实现“write once,run anywhere”。

    2.6K70
    领券