首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Swift入门:枚举

枚举(Enumerations)通常称为“ enum”,发音为“ ee-num”,是一种在Swift中定义自己的的方法。在某些编程语言中,它们只是简单的小事,但是Swift给它们增加了巨大的功能。...如果我们将其设为枚举,则意味着Swift将仅接受这五个-其他任何情况都会触发错误。在幕后,枚举通常只是简单的数字,比计算机使用的字符串要快得多。...枚举在switch / case块内特别有用,特别是因为Swift知道您的枚举可以拥有的所有,因此可以确保覆盖所有这些。...您要么为此添加一个案例,要么添加一个default:。 带有附加值的枚举 (关联枚举Swift最强大的功能之一是枚举可以具有您定义的附加值。...提示:Swift的可选参数实际是使用关联枚举实现的。有两种情况:none和some,some具有可选内的

76520

对iOS应用中的文本进行本地化

对于相当数量的app来说,如果能够将UI中显示的文本进行了本地化转换,基本就完成了app的本地化工作。本文中,我们将探讨iOS开发中,如何实现显示文本的本地化工作。...代码中,order.totalQuantity对应的是Int(Swift在64位系统Int对应的为Int64),因此我们需要在键值对中使用%lld来将其进行替换。...当你尝试添加或减少饮料数量时,文本中的数量都会跟随变化。 请为你的插选择正确对应的格式说明符,比如上面的例子如果设置为%d的话将被系统认为是另一个键而无法完成转换。...实战6:戳我还是点我 根据不同的设备,在添加饮料的按钮显示不同的内容。...比如,我们可以在iphone、ipad显示 tap、在appletv显示select、在mac显示click 在Chinese中添加 image-20210624154950158 在English

2.1K20

窥探Swift编程之错误处理与异常抛出

在下方错误处理中类似于switch-case语句,catch后边可以枚举匹配错误类型,具体如下所示:     ? (4)在枚举实现错误类型中我们可以通过绑定的形式为错误添加错误代码和错误原因。...在声明枚举时,我们使用了枚举元素绑定的特性(关于枚举使用的更多细节请参考之前的博客《窥探Swift之别样的枚举类型》)。...此处catch的用法与switch-case中获取枚举绑定的用法是一样的,所以在此就不做过多的赘述。具体实现方式如下代码所示: ?...2.使用结构体为错误处理添加Reason 在上面的内容中,使用枚举遵循ErrorType协议的方式定义了特定的错误类型。接下来我们将使用结构体来遵循ErrorType协议,为错误类型添加错误原因。...三、在错误处理中使用内置关键字 1.初探这些内置关键字 在Swift中提供了一些内置关键字(__FILE__, __FUNCTION__, __LINE__等)来获取上下文信息,在本篇博客的第三部分,将会给出如何在我们的错误处理中使用这些内置关键字

2.2K50

苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类

这与C 语言为枚举成员分配一个整数值类似,但Swift定义的原始的类型能够是字符串、字符、或随意的整数或浮点数类型等,: enum ASCIIControlCharacter:Character...与C语言为枚举成员指定类似,Swift要求为枚举的每一个枚举成员分配的原始必须在枚举声明内唯一。...用来提供功能; 3) 能够定义一个脚本方法,用来使用脚本语法来存取它们的; 4) 可以定义初始化方法来设置它们的初始状态; 5) 可以扩展来添加�原先没有实现的功能...在Swift中,全部的结构类型都会自己主动产生一个參数初始化方法,能够使用该方法来初始化和创建结构的新的实例及其成员属性,新创建实例的属性的初始使用该初始化方法的參数传进来的: let vga...、布尔类型、字符串、数组和词典,这些类型事实都是以结构类型实现的)一样属于类型。

1K20

Swift基础 扩展

Swift基础 - 扩展 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Extensions.html 扩展为现有类、结构、枚举或协议类型添加了新功能...扩展可用于扩展现有的泛型类型,扩展通用类型中所述。您还可以扩展泛型类型以有条件地添加功能,带有通用Where子句的扩展中所述。...注意 如果您定义了一个扩展来向现有类型添加新功能,则该新功能将在该类型的所有现有实例可用,即使它们是在定义扩展之前创建的。 计算属性 扩展可以将计算实例属性和计算类型属性添加到现有类型中。...如果您将初始化器写为类型原始实现的一部分,则情况并非如此,类型的初始化委托所述。...此示例为Swift的内置Int类型添加了整数下标。

7900

Swift 周报 第四十一期

@Sendable ,提高了严格并发检查的可用性。...修订SE-0192:处理未来的枚举案例[4] 自核心团队宣布对 SE-0192(处理未来枚举案例,又称为非尽事枚举)实施修改以来已经过去了五年。...换句话说,专门用于非尽事枚举的要求,即添加 @unknown 默认情况,以处理未来的枚举案例,已从 “Swift 4 中的警告/Swift 5 中的错误” 降级为 “Swift 4 中的运行时陷阱/Swift...语言指导组在考虑到 Swift 6 语言模式的计划时讨论了 SE-0192 的当前状态,并且我们宣布我们将修改该提案以: 将 Swift 6 中的警告升级为错误 为 Swift 5.x 添加一个即将推出的功能标志...模板(然后仔细阅读,以确保我找到了所有的存储属性,因为它们的声明实际可以出现在文件的任何地方)。

20840

Swift 中的 asyncawait

你可以把它们(async-await)看作是Swift中最好的朋友,因为一个永远不会离开另一个,你基本可以这样说: "Await 正在等待来自他的伙伴async 的回调" 尽管这听起来很幼稚,但这并不是骗人的...执行数据请求 } } 添加异步替代方案 (Add Async Alternative) 添加异步替代重构选项确保保留旧的实现,但会添加一个可用(available) 属性: struct ImageFetcher...要做到这一点,你需要调整可用标记,如下所示: @available(*, deprecated, renamed: "fetchImages()") 你可以在我的文章如何在Swift中使用#available...在我们的例子中,这归结为用我们从最初的fetchImages`回调返回的结果来调用继续。...可以通过使属性可变或将结构体更改为引用类型(类)来修复此错误。 async-await 将是Result枚举的终点吗? 我们已经看到,异步方法取代了利用闭包回调的异步方法。

3.4K30

窥探Swift之别样的枚举类型

Swift中的枚举不仅保留了大部分编程语言中枚举的特性,同时还添加了一些好用而且实用的新特性,在本篇博客中将领略一些Swift枚举类型的魅力。   有小伙伴会问,不就是枚举么,有什么好说的。...在Swift中的枚举怎不然,Swift中的枚举的功能要强大的多,不仅可以给枚举元素绑定,而且可以给枚举元素关联多个,同时还可以通过元素的给一个枚举变量赋一个枚举,并且枚举中可以定义枚举函数。...从字面意思看是给枚举成员关联一个,没错,就是在给枚举变量赋值时,给枚举变量关联一个。在Swift中如何做的呢?...  七、枚举函数     在Swift中的枚举是可以添加函数的,有没有眼前一亮呢。...下面的代码段是在上面的关联代码的基础添加了一个描述函数,返回的就是当前枚举变量的枚举信息,如下代码段所示: 1 //枚举函数 2 enum mobileLanguageFun{ 3 case

97270

你用 iPhone 打王者农药,有人却用它来训练神经网络...

这篇文章主要着眼于如何在 iOS 设备直接为 MNIST 数据集构建和训练一个 LeNet CNN 模型。...接下来,研究者将把它与基于著名的 ML 框架( TensorFlow)的经典「Python」实现方法进行比较。...在 Swift 中为 Core ML 的训练准备数据 在讨论如何在 Core ML 中创建及训练 LeNet CNN 网络之前,我们可以先看一下如何准备 MNIST 训练数据,以将其正确地 batch...在下列 Swift 代码中,训练数据的 batch 是专门为 MNIST 数据集准备的,只需将每个图像的「像素」从 0 到 255 的初始范围归一化至 0 到 1 之间的「可理解」范围即可。 ?...为 Core ML 模型(CNN)训练做准备 处理好训练数据的 batch 并将其归一化之后,现在就可以使用 SwiftCoreMLTools 库在 Swift 的 CNN Core ML 模型中进行一系列本地化准备

2.6K20

在多包项目中统一管理资源

这个结构不仅允许预测性地加载代码和资源,同时也支持类似于本地化这样的系统性特性。Bundle 在存储以目录的形式存在,在代码中则需要通过 Foundation 框架中的 Bundle 类来体现。...之所以强调任何状态,是因为,Swift 会视项目的编译需求而将 Bundle 放置在不同的目录层级( 例如单独编译 SPM Target 、在 SPM 中进行 Preview、在 Xcode 工程中引入...实践本节,我们将通过一个具体案例来演示如何在一个拥有多个包的 Xcode 项目中统一管理资源。可以在 此处[4]获得项目代码。...I18NResource在 Target 对应的目录下创建 Resources 目录修改 Package.swift添加 defaultLocalization: "en", 启用本地化支持在 I18NResource.swift...添加资源文件image-20221106182644181PackageA修改 Package.swift添加 defaultLocalization: "en", 在 Package 的 dependencies

1.4K20

Encoding and Decoding Custom Types

Swift标准库定义了数据编码和解码的标准化方法。 您可以通过在自定义类型实现Encodable和Decodable协议来使用此方法。...这些类型包括标准库类型,String,Int和Double; 和基础类型,日期,数据和URL。...如果序列化数据格式中使用的键与数据类型中的属性名称不匹配,请通过将String指定为CodingKeys枚举的原始类型来提供备用键。用作每个枚举情况的原始的字符串是在编码和解码期间使用的键名。...case名称与其原始之间的关联使您可以根据Swift API设计指南命名数据结构,而不必匹配您正在建模的序列化格式的名称,标点符号和大小写。...Coordinate实例的两个属性使用Swift标准库提供的键控容器API进行初始化。

1.9K40

使用 key paths 创建自定义查询函数

前言 作为一个相当严格,静态编译的语言,Swift 可能不会在语法自定义方面提供许多渠道,但这实际确正好相反。...通过如何在 Swift 中自定义操作符,Swift 中 key paths 的能力,函数/结果构建器 等功能,我们有很多机会为特定用例进行调整 Swift 的语法。...$0.isRead } 这肯定不是一个大问题,但如果上述操作是我们在代码的许多不同地方上演的东西,那么我们可能会开始问自己:“如果我们也可以使用否定的布尔的 key paths 语法会不会更好?...该属性,类别的类型目前被定义为如下所示的枚举: extension Article { enum Category { case fullLength case...操作符一样,我们也可以用 == 运算符进行同样的事情,我们将返回一个返回 Bool 的闭包,然后可以直接传递给筛选器( filter 过滤器): func ==(lhs

2K30

iOS 多国语言本地化与App内语言切换(Swift)写在前面前言准备工作storyboardxib本地化纯代码本地化语言切换后记

storyboard/xib本地化 纯代码本地化 语言切换 准备工作 项目中添加语言 ?...storyboard/xib本地化 storyboard/xib做本地化Xcode基本是一键搞定了。...纯代码本地化 创建string文件 ? ? 勾选语言,把几种全部勾上,包括Base (为下文使用脚本生成代码做准备) 参考此篇文章进行脚本添加 iOS中多语言本地化流程的优化 ?...,基本介绍本地化的教程都会有。...,是不是很简单呢~~ 后记 对于普通的小项目本地化的内容其实远没有那么复杂,需要替换的内容也很少,只要添加过一次语言,再添加新语言就非常简单了。

2.3K31

Swift学习总结

7、枚举Enum语法多了case关键字,支持一系列类型,包括所有的内建数值类型和字符串。在swift中,方法可以和枚举关联,即在枚举添加方法。...在swift中,枚举类型,而类型的方法不能对self进行修改,如果希望类型方法能修改self,需要标记这个方法为mutating。...Swift枚举,除了像其它语言那样定义一些静态的成员枚举可能的状态,还提供了一种强大的特性,可以定义带关联的成员。关联能让你把数据附在枚举实例,不同的成员可以有不同类型的关联。...这里的多继承协议,有点类似c++的抽象类了 你可以在协议的继承列表中,通过添加 class 关键字来限制协议只能被类类型遵循,而结构体或枚举不能遵循该协议。...6、swift新特性,除了枚举、结构、类支持extension扩展,协议也可以进行扩展,可以添加有实现的计算属性和方法,只是不能添加存储属性。

3K20

Swift 周报 第三十三期

既往,你可以随时更改你的 App、App 内购买项目和自动续期订阅的价格。...我们将此 变量称为“投影”而不是“绑定”或其他任何名称,因为 语法是通用语言功能,因此如果您使用 @Binding 以外的其他内容,$ 属性可能不会创建绑定;可能被赋予一些其他功能。...虽然 Swift 5.9 添加了对不可复制结构和枚举的支持,但这些类型仍然不允许用作泛型类型参数。...它的树看起来像这样: HTML(模块) HTML(结构) HTML.属性(枚举) HTML.ContainerElement(枚举) HTML.VoidElement(枚举) 到目前为止,一切都很好。...通过示例,展示了如何创建短数字格式样式和粗体数字格式样式,并说明了如何在自定义类型中重用这些格式样式。最后,作者还提供了一种封装格式化逻辑的方法。

31420
领券