一、swift语言学习
循环
1.for-in 循环
for-in 循环用于遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。
for index in 1...5 {
print("this is \(index)")
}
上面的例子中,index 是一个每次循环遍历开始时被自动赋值的常量。这种情况下,index 在使用前不需要声明,只需要将它包含在循环的声明中,就可以对其进行隐式声明,而无需使用 let 关键字声明。
for _ in 1...5{
print("Hello")
}//如果不需要区间序列内每一项的值,可以使用_代替变量名来忽略这个值
let base = 3//底数
let power = 10//幂
var answer = 1
for _ in 1...power{
answer *= base
}//乘方,3的10次幂
区间运算符
- 闭区间运算符a…b
定义一个包含从a到b(包括a和b)的所有值的区间,b必须大于等于a。 - 半开区间运算符a…<b
定义一个从a到b但不包括b的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。
2.while循环
while循环从计算单一条件开始。如果条件为true,会重复运行一系列语句,直到条件变为false。
var index = 10
while index < 20
{
print( "index 的值为 \(index)")
index = index + 1
}
3.repeat…while 循环
repeat…while 循环不像 for 和 while 循环在循环体开始执行前先判断条件语句,而是在循环执行结束时判断条件是否符合。
import Cocoa
var index = 15
repeat{
print( "index 的值为 \(index)")
index = index + 1
}while index < 20
4.循环控制语句
循环控制语句改变你代码的执行顺序,通过它你可以实现代码的跳转
Continue 语句
continue语句告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
for index in 1...5{
if index % 2 == 0{
continue
}
print("this is \(index)")
}
运行结果为:
this is 1
this is 3
this is 5
var index = 10
while index < 20
{
if index % 2 == 0{
index = index + 1//更新index以防死循环
continue
}
print( "index 的值为 \(index)")
index = index + 1
}
Break 语句
break语句会立刻结束整个控制流的执行。
如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
for index in 1...5{
if index % 2 == 0{
break
}
print("this is \(index)")
}
运行结果为:
this is 1
字符串
字符串是一系列字符的集合,它的数据类型为 String
1.创建字符串
你可以通过使用字符串字面量或 String 类的实例来创建一个字符串:
var strA = "hello"//使用字符串字面量
var strB = String("hello")//String实例化
2. 空字符串
- 你可以使用空的字符串字面量赋值给变量或初始化一个String类的实例来初始值一个空的字符串。
- 我们可以使用字符串属性 isEmpty 来判断字符串是否为空
var emptyStringA = ""//引号内什么都没有
var emptyStringB = String()
emptyStringA.isEmpty//布尔值
3.字符串中插入值
字符串插值是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。 您插入的字符串字面量的每一项都在以反斜线为前缀的圆括号中:
var varA = 20
let constA = 100
var varC:Float = 20.0
print("\(varA) 乘于 \(constA) 等于 \(varC * 100)")
4.字符串连接
字符串可以通过 + 号来连接
var strA = "hello"
var strB = "world"
print(strA + "," + strB)
5.字符串长度
字符串长度使用 String.count 属性来计算
var strA = "hello"
var strB = "world"
var strC = strA + "," + strB
print(strC.count)
字符(Character)
Swift 的字符是一个单一的字符字符串字面量,数据类型为 Character。
let char1: Character = "A"
如果你想在 Character类型的常量中存储更多的字符,则程序执行会报错
Swift 中不能创建空的 Character 类型变量或常量
遍历字符串中的字符
Swift 的 String 类型表示特定序列的 Character(字符) 类型值的集合
for ch in "hello"{
print(ch)
}
字符串连接字符
String 的 append() 方法来实现字符串连接字符
- List item
var varA:String = "Hello "
let varB:Character = "G"
varA.append( varB )
print("varC = \(varA)")
数组
- 数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。
- Swift 数组会强制检测元素的类型,如果类型不同则会报错。
- 如果创建一个数组,并赋值给一个变量,则创建的集合就是可以修改的。这意味着在创建数组后,可以通过添加、删除、修改的方式改变数组里的项目。
- 如果将一个数组赋值给常量,数组就不可更改,并且数组的大小和内容都不可以修改。
1.创建数组
var names = ["Ada","Bill","Sam"]//字面量创建
var numbers: [Int] = [1,2,3,4]//类型标注
var someInts = [Int](repeating: 0, count: 3)//默认值为0,数量为3
2.空数组
需要明确类型
var emptyArray: [Int] = []
var emptyArray2 = [Int]()
3.基本数组操作
通过索引(从0开始)读取特定值
var numbers: [Int] = [2,4,6,8]
print(numbers[0])
numbers[3] = 10//通过索引改变一个值
[2, 4, 6, 10]
print(numbers.count)//读取数组长度
print(numbers.isEmpty)//是否为空,布尔值
可以使用 append() 方法或者赋值运算符 += 在数组末尾添加元素
numbers += [12]
numbers.append(12)//追加一个值
numbers.insert(9,at:4)//插入一个值
[2, 4, 6, 8, 9, 12]
var names = ["Ada","Bill","Sam"]
let morenames = ["Ford","George","Helen"]
names = names + morenames//数组拼接
print(names)
可以使用for-in循环来遍历所有数组中的数据项:
var names = ["Ada","Bill","Sam"]
for index in names{
print(index)
}
运行结果:
Ada
Bill
Sam
如果我们同时需要每个数据项的值和索引值,可以使用 String 的 enumerate() 方法来进行数组遍历
var names = ["Ada","Bill","Sam"]
for (index,number) in names.enumerated(){
print("index为\(index)的地方是\(number)")
}
运行结果:
index为0的地方是Ada
index为1的地方是Bill
index为2的地方是Sam
二、Swift UI入门
创建项目并探索画布
创建一个项目,选择iOS,App,SwiftUI界面。
但是在我实际操作过程中,进入界面后就已经写好一个程序。
选择App.swift
选择ContentView.swift
已经写好的程序,点击➕会在列表最后添加当时时间,点击Edit,出现
进入编辑界面,点击红色按钮,再点击Delete就删除这条信息,点击Done完成编辑,回到原界面,点击灰色箭头,看到详细信息
点击Back返回。
以我现在的水平还不能完全将代码与其功能对应,以后学习更多知识后,会详细分析此代码。查找资料,我找到了使用swiftUI时"Hello,World!"代码。
LandmarksApp.swift
该结构的body属性返回一个或多个场景,这些场景又提供显示内容。该@main属性标识应用程序的入口点。
ContentView.swift
默认情况下,SwiftUI 视图文件声明了两个结构。第一个结构符合View协议并描述视图的内容和布局。第二个结构声明了该视图的预览。
当更改视图body属性中的代码时,预览会更新以反映您的更改。
选择文本,可以在右侧调试文本,或者在左侧添加操作
也可以使用+,添加组件