iOS中 Swift初级入门学习(一)

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: /// Copyright (c) 2015年 韩俊强. All rights reserved.//import Foundation// Swift当中的输出函数// println Swift2.
/
//  Copyright (c) 2015年 韩俊强. All rights reserved.
//

import Foundation
// Swift当中的输出函数
// println Swift2.0 之前使用的输出函数, 可以自动换行
// print Swift2.0之前自动换行, Swift2.0之后可以自动换行
println("Hello, World!")

// 单行注释和以前一样
// 块注释
/*

      块注释
    /*

     可以嵌套注释

    */

*/


/*


// 如何声明一个常量 规则: let 常量名: 类型 = 值
// Swift当中我们不必再代码语句的结尾处加分号, 但是如果一行中写了几句代码, 那么代码之间就要用分号隔开
let a: Int = 5;    let b: Int = 10

// 如何声明一个变量 var 变量名: 类型 = 值
// Character 字符型
var c: Character = "a"
println(c)

// 常量的值不可以发生改变, 变量的值可以改变
// a = 10 错误
c = "b"

// 命名规则
// 我们可以使用大部分的特殊符号, 中文也可以, 数字, 字母, 下划线, 但是非法的Unicode编码, 数字符号, 标志符是不可以的
let 小韩哥: String = "好帅"
<pre name="code" class="plain">// 类型推断
// Swift 会根据我们给常量或者变量赋的值来推断我们常量或者变量的类型
let 常量 = 10  // 根据推断: 常量是int类型

var 变量 = 20 // 变量是一个int 类型

// Swift是一门类型安全的语言, 我们不能给一个类型的变量赋给另一个类型
// 变量 = 19.5 错误

变量 = 30

println(变量)

// 数值字面量
// 20, 10 , 字符串
// 0b
//let ab = 1011
//println(ab)
let ab = 0b1010
println(ab)

// 八进制值字面量
let ac = 0o17
println(ac)

// 十进制字面量, 默认的数组就是十进制
let ad = 18

// 十六进制字面量 0x 开头
let ae = 0xabc
println(ae)

// 字符串插值
// Swift当中没有占位符, 我们可以以字符串插值的形式当做占位符 \(), 括号中存放常量或者变量的名字
let af = "hello,wold"
println("af = \(af)")

// 类型转换
let 浮点型: Float = 15.9
let 整型: Int = 20
// 不同类型不可以直接做运算
// 浮点型转化成Int类型 Int()
//  Int类型转化为浮点型  Float()
let result = Int(浮点型) + 整型

// 打印最大值, 最小值
println(Int8.max)
println(Int16.min)

println(UInt8.max)
println(UInt8.min)


// 类型别名的使用
typealias newInt32 = Int32;
println(newInt32.max)

// 布尔值 只有true false
var 布尔值 = true
println(布尔值)
布尔值 = false
println(布尔值)

// 元组
// 多个不同类型的值组合成的一个复合值
let 元组 = ("小明",28,95.5);

// 取出元组里面的值
// 通过元组名. 下标的形式取出元组的内容
println(元组.0)
println(元组.2)

// 如果我们声明元组的时候,给元组里面的内容前加一个名字, 那么我们就可以通过 元组名.元素名字 的方式取出元组里面的内容
let 小韩 = (身高: 170,年龄:25 )
println(小韩.身高,小韩.年龄)

// 元组的分解
let (身高,年龄) = 小韩
println(身高,年龄)

// 可选类型
// 可选类型是用来处理值缺失的情况, 一个变量声明成可选类型的话, 证明这个变量可能有值,也可能未空

// 声明一个可选类型
var str: String?
println(str)
str = "hello,good morning"
println(str)

// 我们要使用可选类型变量值的话,需要把可选类型里面的值解析出来, 方式:变量名 + ! ,这种方式叫做强制解析

var aStr = "95588"
var aIntofOptinal = aStr.toInt()
println(aIntofOptinal)
// 强制解析之前我们要确保变量有值, 如果没有值, 我们不能在可选类型后面 + !来强制解析
var result1 = aIntofOptinal! + 10
println(result1)

// 隐式解析类型
// 为了我们使用可选类型的时候, 不用发每次都用强制解析的方式取值, 我们可以在声明变量的时候在类型标注后面不用? 而用!的形式

// for example
var 隐式解析类型: Int!
println(隐式解析类型)

隐式解析类型 = 20;
println(隐式解析类型)

// 断言
// 起到断点调试的作用
var bStr: String?
bStr = "忘赋值了"
assert(bStr != nil, "字符串不为空")
println(bStr!)


*/

/*
// 运算符
// 根据操作数的不同, 运算符可以分为一元, 二元, 三元运算符
// + - *  /  %
// + 
let a = 3; let b = 5
var c = a + b
println("c = \(c)")

// - 
c = b - a
println(c)

// *
c = a * b
println("c = \(c)")

// /
c = b / a
println("c = \(c)")

// %
c = a % b
println("c = \(c)")

// 自增, 自减运算
// ++
var aNumber = 10
// ++ 在前取新值, ++ 在后取旧址 , 不管++在变量的前面, 还是在变量的后面, 该变量都会自增1
let result = ++aNumber + aNumber++ + ++aNumber
println("result = \(result)")
println(aNumber++)

// --
let result2 = --aNumber - aNumber-- + --aNumber
println(--aNumber)
println(result2)

// 复合运算符
// +=   -=    /=     %=
// +=
var 变量 = 10
变量 += 5 // 变量 = 变量 + 5
println(变量)

// -=
变量 -= 5
println(变量)

//  /=
变量 /= 2
println(变量)

// %=
变量 %= 1
println(变量)

// 三目运算符  条件 ? 值1 : 值2 条件为真的时候取值1, 条件为假的时候取值2
let maxNumber = 5; let minNumber = 3
let result3 = maxNumber > minNumber ? maxNumber : minNumber
println(result3)

// 比较运算符 >, < , <= , >= ,== , !=
if maxNumber > minNumber {
    println( "\(maxNumber) 比 \(minNumber) 大")
}

if maxNumber < minNumber {
    println("\(maxNumber) 比 \(minNumber) 小")
}

if maxNumber <= minNumber {
    println("\(maxNumber) 不比 \(minNumber) 大")
}

if maxNumber >= minNumber {
    println("\(maxNumber) 不比 \(minNumber) 小")
}

if maxNumber != minNumber {
    println("\(maxNumber) 不等于 \(minNumber) ")
}

if maxNumber == minNumber {
    println("\(maxNumber) 等于 \(minNumber)")
}

// 逻辑运算符, 逻辑与 &&, 逻辑或 || , 逻辑非 !
// 注意  逻辑与 逻辑或 的短路现象
// 逻辑与 运算符前面条件为假, 运算符后面的语句就不走(一假即真)
// 逻辑或 运算符前面条件为真, 运算符后面的语句就不走(一真即真)
// 逻辑非 取反

var num = 10
if num++ == 10 || num-- > 0 {
    println(num)
}

// 空合运算符 ?? 
var str = "123"
var num3 = str.toInt()
// 判断一个可选类型, 如果为空,就给一个常量赋值 567, 如果不为空, 就取这个可选类型变量解析出来的值
// 等价于
if num3 == nil {
    let result = 567
    println(result)
} else {
    let result = num3!
    println(result)
}

// 等价于
let result4 = num3 == nil ? 567 : num3!
println(result4)

let result5 = num3 ?? 567
println(result5)

// 区间运算符
// (a...b) 包含 a 到 b 范围内的数, 且包含 a 和 b
// (a..<b) 包含 a 到 b 范围的数, 包含 a  不包含 b
for 数字 in (1...9) {
    println(数字)
}

for number in (1..<9) {
    println(number)
}

*/

// 字符串
// 在Swift当中没有可变字符串与不可变字符串之分, 字符串的可变与不可变只有我们用let. 还是var 来修饰有关, 如果let修饰,那么字符串不可变, var 修饰,这个字符串就可变

var str = "hello,word"
// 遍历字符串中的每个字符
for 字符 in str {
    println(字符)
}

// 字符串的拼接, 我们可以直接通过运算拼接字符串
str += " = 你好世界!"
println(str)

// 这种方式只能拼接一个字符, 并且字符的位置在字符串的最后
let charactor : Character = "啊"
str.append(charactor)
println(str)

// 判断字符串是否有前后缀
let aStr = "meinv.png"
if aStr.hasPrefix("meinv") {
    println("有前缀meinv")
}else{
    println("没有前缀")
}
// 判断字符串是否有后缀
if aStr.hasSuffix(".png") {
    println("png格式")
}else{
    println("其他格式")
}

// 判断字符串是否为空
if aStr.isEmpty {
    println("字符串为空")
}else{
    println("字符串不为空")
}
// 全部大写
let resultOfStr = aStr.uppercaseString
println(resultOfStr)
// 全部小写
let resultOfStr1 = aStr.lowercaseString
println(resultOfStr1)
// 首字母大写
let resultOfStr2 = aStr.capitalizedString
println(resultOfStr2)

// OC里面的字符串
let bStr : NSString = "hello"
let resultOfStr3 = bStr.length
println(resultOfStr3)

// 数组
// 通过构造方法来创建一个空数组
var array : Array<String> = Array()

// 第二种
var array1 = [Int]()
// 第三种
var array2 : [String] = Array()

// OC里面创建数组
var array3 = NSArray()

var arrayOfBook = ["金瓶梅","玉女心经","玉蒲团","一路向西"]

// 修改数组中的元素
arrayOfBook[3] = "西游记"

for element in arrayOfBook {
     println(element)
}

// 另一种方式
for (index,value) in enumerate(arrayOfBook){
    
    println((index,value))
    
}

// Swift2.0之后写法 点语法
//for (不知道,不知道2) in arrayOfBook.enumerate{
//    println((不知道,不知道2))
//}

//
arrayOfBook[0...2] = ["三国演义","水浒传","红楼梦","通讯录"]
for element in arrayOfBook {
    println(element)
}

// 插入元素
arrayOfBook.insert("射雕英雄传", atIndex: 0)

// 删除元素
arrayOfBook.removeLast()

for element in arrayOfBook {
    println(element)
}

println(arrayOfBook.capacity)
// 删除所有元素
// keepCapacity表示是否保持容量,如果参数为true的话, 同时把元素清为零,但是保留清空之前的空间, 如果参数为false 的话, 清空元素后每添加一个元素时,空间不够用时,会开辟添加上一次元素空间的2倍

arrayOfBook.removeAll(keepCapacity: false)

// 判断数组是否为空
if arrayOfBook.isEmpty {
    println(arrayOfBook.capacity)
}

arrayOfBook.insert("text", atIndex: 0)
   println(arrayOfBook.capacity)

// 字典
// C语言的创建一个空字典方式
var dict : Dictionary<Int, Int> = Dictionary()
var dict2 : [String : String] = Dictionary()

// OC的形式
var dict3 = NSDictionary()

var studentOfDict = ["name" : "小明","age" : 18]

// 遍历子典里面的所有的key
for key in studentOfDict.keys {
    println(key)
}

// 遍历字典里所有的value
for value in studentOfDict.values{
    println(value)
}

// 给字典添加一个元素
studentOfDict["adress"] = "天下第一楼"
println(studentOfDict)

// 删除一个元素
studentOfDict.removeValueForKey("adress")
println(studentOfDict)

studentOfDict["age"] = nil

// 遍历字典里面的key和value
for (key,value) in studentOfDict {

    println((key,value))
    
}

每日更新关注:http://weibo.com/hanjunqiang  新浪微博
目录
相关文章
|
4月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
86 2
|
4月前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
104 9
|
4月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
104 1
|
4月前
|
安全 API Swift
探索iOS开发中的Swift语言之美
【10月更文挑战第23天】在数字时代的浪潮中,iOS开发如同一艘航船,而Swift语言则是推动这艘船前进的风帆。本文将带你领略Swift的独特魅力,从语法到设计哲学,再到实际应用案例,我们将一步步深入这个现代编程语言的世界。你将发现,Swift不仅仅是一种编程语言,它是苹果生态系统中的一个创新工具,它让iOS开发变得更加高效、安全和有趣。让我们一起启航,探索Swift的奥秘,感受编程的乐趣。
|
5月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
86 5
|
5月前
|
安全 Swift iOS开发
探索iOS开发中的Swift语言之美
在数字时代的浪潮中,移动应用已成为日常生活的延伸。本文将深入探讨iOS平台上的Swift编程语言,揭示其背后的设计哲学、语法特性以及如何利用Swift进行高效开发。我们将通过实际代码示例,展示Swift语言的强大功能和优雅简洁的编程风格,引导读者理解并运用Swift解决实际问题。
|
5月前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
155 7
|
6月前
|
安全 Swift iOS开发
探索iOS开发之旅:Swift语言的魅力与挑战
【9月更文挑战第21天】在这篇文章中,我们将一起潜入iOS开发的海洋,探索Swift这门现代编程语言的独特之处。从简洁的语法到强大的功能,Swift旨在让开发者能够以更高效、更安全的方式构建应用程序。通过实际代码示例,我们会深入了解Swift如何简化复杂任务,并讨论它面临的挑战和未来的发展方向。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和知识。
75 4
|
6月前
|
设计模式 前端开发 Swift
探索iOS开发:Swift与Objective-C的较量
在这篇文章中,我们将深入探讨iOS开发的两大编程语言——Swift与Objective-C。我们将分析这两种语言的特性、优势和局限性,并讨论它们在现代iOS开发中的应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和建议。
113 3
|
6月前
|
安全 编译器 Swift
探索iOS开发之旅:Swift编程语言的魅力与挑战
【9月更文挑战第5天】在iOS应用开发的广阔天地中,Swift作为苹果官方推荐的编程语言,以其简洁、高效和安全的特点,成为了开发者的新宠。本文将带领你领略Swift语言的独特魅力,同时探讨在实际开发过程中可能遇到的挑战,以及如何克服这些挑战,成为一名优秀的iOS开发者。

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 2
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 7
    iOS各个证书生成细节
  • 8
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
  • 9
    Kanna 与 Swift:结合使用提升网络请求效率
  • 10
    iOS MapView(定位)