升级到Xcode7.3,使用swift3编译,在截取字符串的时候报错,it will be removed in Swift 3. Use the '..<' operator. 解决办法: var continousDigitsRange1:Range<Int> = 0..<0 或者 var continousDigitsRange = 0..<0
我们知道在Swift2中,默认情况下方法的参数是let值,也就是不可改变的. 不过我们可以在参数前添加var关键字改变其不变性: func foo(var i:Int){
i += 1
print(i)
} 不过遗憾的是在Swift2.x+中,已经明确表明方法参数的修饰关键字var将会在Swift3中被移除,所以为了产出这可恶的警告,你必须使用inout关键字,并且在调用方法传递实
我们知道Swift可以扩展已存在的类或结构,这些类或结构可以存在于标准库(或称为核心库)中.如果结构是一个集合类型(比如Array)就更有趣了.我们想尝试写一个限定Type数组的扩展,So我们就拿Array< Int>为例吧. 本猫想是不是可以这么写: extension Array<Int>{
//....
} 不过显然不可以 :[ 翻看了一下Apple官方的Swift编程语言,一无所获
经历了从swift 1.0 到2.0,一个版本之后代码居然就不兼容了。这如何在团队推广呢?没有想到3.0居然变化更加的大。有多大,来体会一下: UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)
UIFont.preferredFont(forTextStyle: UIFontTextStyleSubheadline)
ove
在Swift中如果想搞类的单例模式,那么在初始化的时候一般会使用just one time执行的方式,我们使用dispatch_once_t配合调用dispatch_once方法,一般的代码如下: static var token: dispatch_once_t = 0
func whatDoYouHear() {
print("All of this has happened befo
enum StringCase:String {
case One = "One"
case Two,Three,Four,Five
func discription() -> String {
switch self {
case .One:
return "One"
case .Two:
1️⃣
for i in 0..<4 {
print(i)
} 2️⃣
for i in 0...4 {
print(i)
} ..<:包含开始值,不包含结束值。上面1️⃣的输出是:0 1 2 3 ...:包含开始和结束值。上面2️⃣的输出是:0 1 2 3 4
我们可以使用“\()”在一个字符串中包含我们定义的基本类型的变量 let age = 27
let name = "Ryoma"
print ("I am \(name), I am \(age) years old")输出会是 I am Ryoma, I am 27 years old
var names = ["LiuMC","Ryoma"]
var nameWithAge = ["LiuMC":27,"Ryoma":27]
print(names)
print(nameWithAge) 输出 ["LiuMC", "Ryoma"] ["LiuMC": 27, "Ryoma": 27] names是一个数组 nameWithAge是一个字典 创建空的数组和字典: var empt
var optionalString: String? = "Hello Swift" ?是说当前生命的变量是可能有值,也有可能为nil ?可以规避实例为nil时,调用实例方法报错的现象, instance?.method 当instance是nil的时候因为instance是可选类型,所以语句会直接忽略后面的不在执行,故而不会出现异常(?前面的值为nil时,?后面的操作会全部忽略) ??是用来提
我们在写函数的时候,如果不提供参数的标签,那么参数的标签就是参数的名字 我们可以在参数名称前面加上自己想要的文字作为函数的参数标签,如果我们不想使用参数标签的话我们可以在参数名称前面加上"_" 下面上个截图,分别使用自定义标签、参数名称以及不适用标签
函数是可以嵌套的 当我们写一个比较长的函数的时候,我们可以使用函数嵌套的形式,将内部的代码抽取为一个嵌套的函数,这样看起来更加具有调理性 func sumOneTwo()->Int {
var sum = 0
func sumFunc(){
sum = 1 + 2
}
sumFunc()
return sum
}
<pre name="code" class="plain">var numbers = [1,10,5,15,13]
numbers = numbers.map({(number:Int)->Int in
return 3*number
})
print(numbers) 数组的map方法就是使用一个闭包对数组的元素进行操作,然后返回一个操作过的数组 上面我们是对数组的元素进行了扩大三倍
Use struct to create a structure. Structures support many of the same behaviors as classes, including methods and initializers. One of the most important differences between structures and classes is
声明的关键字就是protocol 我们看一个官方例子 protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
} 枚举、结构体和类都可以使用协议 类使用协议 class SimpleClass: ExampleProtocol {
var simpleDe
我们在Java等其他语言之都知道有错误处理 基本上都是 try和catch配对的 那么在swift中同样也有 我们首先可以定义一下自己的错误类型如下面 enum MyErrors:Error {
case NOT_NUMBERIC
case NO_NAME
case OUT_OF_RANGE
}对于异常的抛出,同样是使用throw关键字,我们使用throws来标记
swift的泛型也是使用<>的形式 函数、方法、类、枚举、结构体都可以使用泛型 func genericFunc<Item>(repeatItem item:Item, numberOfLoop:Int)->[Item] {
var result = [Item]()
for _ in 0..<numberOfLoop {
result.append(item)
print可以让我们打印一些信息进行调试查看 单个信息打印 print("hello")输出 hello 多个信息打印 print(1,2,3,4) 输出 1 2 3 4 自定义连接符打印 print(1,2,3,4, separator:"-") 输出 1-2-3-4 自定义结束符打印(默认回车换行) <pre name="code" class="plain">print(1,2,3,4, s
十进制、二进制、八进制、十六进制 A decimal number, with no prefix A binary number, with a 0b prefix An octal number, with a 0o prefix A hexadecimal number, with a 0x prefix Decimal floats can also have an optional e
别名 根据自己的需要可以将已有的类型进行别名命名 语法 <span style="color:#ff0000;">typealias</span> Count = UInt16
print(Count.max) 元组 元组可以将多个类型的值聚合起来 let http404Error = (404, "Not Found") 上面就是一个元组,包含了 404 和 ”Not Found“两个元素 如果