#Swift

先写了份SwiftUI学习教程大纲,涵盖了SwiftUI的所有关键技术和概念,后面有时间慢慢补坑。

在 Combine 框架中,并没有一个名为 flatMapLatest 的直接操作符,这是 ReactiveX(例如 RxSwift)中的一个术语,用于描述一个特定的 flatMap 行为:每当源发布者发出一个新的值,flatMapLatest 会切换到新的发布者,并取消订阅之前的发布者。

👏 欢迎使用 Gridea
✍️ Gridea 一个

静态博客写作客户端。你可以用它来记录你的生活、心情、知识、笔记、创意... ...

最近看到一个使用 javascript 编写的模拟粒子运动的库verlet-js,效果很不错,于是就想把他移植到 iOS 上,花了点时间使用 swift 把代码移植了过来,最后还加了一个粒子系统的 demo,源代码已经放到 github 上了:

https://github.com/MellongLau/ParticleAnimation

下面放上Demo效果截图:

Shape

类,结构体和枚举都可以定义下标,使用下标可以快速访问集合,列表或者序列的数据成员元素。可以使用someArray[index]来访问Array, 使用someDictionary[key]来访问Dictionary。

一个类型可以定义多个下标。

定义一个get set的下标:

subscript(index: Int) -> Int {
    get {
        // return an appropriate subscript value here
    }
    set(newValue) {
        // perform a suitable setting action here
    }
}

这篇文章源于群友的一个问题:如何把**『注:此商品只能整件(12的倍数发货),已选1袋,还差11袋』**这段文字中的数字使用红色在 UILabel 中显示?

大概思路是:我们可以使用UILabelattribute string 属性,通过正则表达式匹配获取数字的范围,然后添加对应的 attribute。

枚举在编程中很多时候要用到,在 Swift 中,枚举具有更多的特性。

枚举语法

使用关键字 enum 定义一个枚举

enum SomeEnumeration {
    // enumeration definition goes here
}

例如,指南针有四个方向:

enum CompassPoint {
    case north
    case south
    case east
    case west
}

这里跟 c 和 objective-c 不一样的是,Swift 的枚举成员在创建的时候没有给予默认的整型值。所以上面代码中的东南西北并不是0到3,相反,不同的枚举类型本身就是完全成熟的值,具有明确定义的CompassPoint类型。