D273e4d45af76fffff3f1d00584b628f
SwiftUI 数据库大全之铁路模型收集数据库管理App CoreData

实战需求

SwiftUI 数据库大全之铁路模型收集数据库管理App CoreData

本文价值与收获

看完本文后,您将能够作出下面的界面

SwiftUI 数据库大全之铁路模型收集数据库管理App CoreData

SwiftUI 数据库大全之铁路模型收集数据库管理App CoreData


基础知识

  • outline二级列表
  • 复杂coredata模型管理

开源库使用

Swift Numerics

Swift Numerics提供了一套支持Swift中数值计算的模块。这些模块大致分为两类:

  • API太专业了,无法进入标准库,但足够通用,可以集中到单个公共包中。
  • 正在积极开发的API,以在未来可能纳入标准库。

这两个类别之间有一些重叠,从第一个类别开始的API可能会随着它成熟和发现新用途而迁移到第二个类别。

Swift Numerics模块是细粒度的。例如,如果您需要对复杂数字的支持,您可以将ComplexModule1导入为独立模块:

import ComplexModule

let z = Complex<Double>.i

还有一个顶级Numerics模块,可以重新导出Swift Numerics的完整公共界面:

import Numerics

// The entire Swift Numerics API is now available

Swift Numerics模块对其他项目的依赖最小。

当前模块仅假设Swift和C标准库的可用性以及编译器-rt提供的运行时支持。

未来的扩展可能假设其他标准接口的可用性,如BLA(基本线性代数子程序)和LAPACK(线性代数包),但具有更专业依赖项(或Swift支持的所有平台上不可用的依赖项)的模块属于单独的软件包。

Swift Algorithms

Swift Algorithms 是序列和集合算法及其相关类型的开源包。下面是支持功能:

组合/排列

combinations(ofCount:):集合中元素特定大小的组合。
permutations(ofCount:):集合中元素或完整集合中元素的特定大小的排列。
uniquePermutations(ofCount:):集合元素的排列,跳过任何重复的排列。

突变算法

rotate(toStartAt:), rotate(subrange:toStartAt:)元素的就地旋转。
stablePartition(by:), stablePartition(subrange:by:): A partition that preserves the relative order of the resulting prefix and suffix.

合并收藏品

chain(_:_:):将两个具有相同元素类型的集合连接起来。
cycled(),cycled(times:)永久重复集合的元素或固定次数。
joined(by:):序列的串联序列,使用元素或序列作为分隔符,或使用闭包生成每个分隔符。
product(_:_:):迭代两个集合的所有对;相当于嵌套for-in循环。

子设置操作

compacted():从序列或集合中删除nil,打开剩余元素。
randomSample(count:), randomSample(count:using:)从集合中随机选择特定数量的元素。
randomStableSample(count:), randomStableSample(count:using:)从集合中随机选择特定数量的元素,保留其原始相对顺序。
striding(by:):返回集合的每个n个元素。
suffix(while:):返回所有元素都传递给定谓词的集合的后缀。
trimmingPrefix(while:)、trimmingSuffix(while)trimming(while:)通过修剪集合的开始、结束或两者的元素来返回切片。突变trim...方法就位修剪集合。
uniqued(), uniqued(on:)集合的唯一元素,保留它们的顺序。
minAndMax(), minAndMax(by:): Returns the smallest and largest elements of a sequence.

部分排序

min(count:), max(count:), min(count:sortedBy:), max(count:sortedBy:): Returns the smallest or largest elements of a collection, sorted by a predicate.

其他有用的操作

adjacentPairs():懒惰地迭代相邻元素的元组。
chunked(by:), chunked(on:), chunks(ofCount:): Eager and lazy operations that break a collection into chunks based on either a binary predicate or when the result of a projection changes or chunks of a given count.
firstNonNil(_:):返回转换序列元素的第一个非nil结果。
indexed():迭代集合索引和元素的元组。
interspersed(with:):在序列的每个元素之间放置一个值。
partitioningIndex(where:):返回与谓词匹配的集合分区的起始索引。
reductions(_:), reductions(_:_:)返回减少序列或集合元素的所有中间状态。
split(maxSplits:omittingEmptySubsequences:whereSeparator),split(separator:maxSplits:omittingEmptySubsequences)标准库渴望操作的懒惰版本,将序列和集合拆分为由指定分隔符元素分隔的子序列。
windows(ofCount:):将集合分解为重叠的子序列,其中元素是原始集合的切片。


实战代码

1、主界面
```
import SwiftUI

struct ContentView: View {
#if os(iOS)
@Environment(\.horizontalSizeClass) var horizontalSizeClass
#endif

top Created with Sketch.