运算符函数 struct Vector2D {
var x = 0.0, y = 0.0
}
func + (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x + right.x, y: left.y + right.y)
}
let vector = Vector2D(x: 3.0,
基本语法 声明常量(constants)用let,声明变量(variables)用var,声明函数(functions)用func。 类型修饰采用后置语法: 声明常量和变量时用冒号指示类型,自带初值时类型修饰可省略,其类型由编译器根据初值自行推导。 声明函数时用箭头指示返回类型,有返回值时返回类型不可省略。 常量 变量 函数(有返回值) 函数(无返回值) Swift let i = 10 le
泛型函数 func swapTwoValues<T>(inout a: T, inout b: T) {
let temporaryA = a
a = b
b = temporaryA
}
var someInt = 3
var anotherInt = 107
swapTwoValues(&someInt, b: &anotherInt)
print(someInt)
p
属性(Properties) 在类型(类,结构,枚举)中定义的值被称为属性。 字段 属性 Java 有 无 C# 有 有 Swift 无 有 按存储方式分,属性可分为:存储属性(stored properties 存储在常量或变量中的属性)和计算属性(computed properties 经过计算由get返回由set设置的属性)。 存储属性可以加上懒惰(lazy)标签,表示属性初始化时间延后
What’s New in Swift Swift2 The Swift Programming Language (Swift 2) What’s New in Swift 错误处理-Error Handle 由原来的error 改成try-catch 或者throws 之前 语法如下 var reg :NSRegularExpression! = NSRegularExpression(pat
相信写过Swift的人应该都知道Alamofire,它是AFNetworking的Swift版本,同一个作者写的。之前在项目中我也一直使用Alamofire,但是升级到Xcode7之后旧版的Alamofire不能用了,最新版的又只支持iOS8之后的系统,而公司项目还得兼容iOS7,所以接下来不打算用它了。 我的需求比较简单,只要能发送GET请求获取数据以及发送POST请求提交数据就好了,大致看了一
从Swift2开始,String不再遵守CollectionType协议,即不再是集合类型,但是String的属性characters遵守CollectionType协议。 String的characters属性的类型是CharacterView(结构体) 获取字符串String中单独的字符Character: for character in "Dog".characters {
pri
Swift2.0中引入了协议扩展的特性,并且建议开发者一切从协议(Protocol)出发,经过几个月的学习探索,博主发现Swift作为一门面向协议编程(POP)的语言非常适合时下火热的MVVM架构。MVVM已经提出有一段时间了,如果你还不懂什么是MVVM,建议先去补充相关的知识,再回到本文中。 在Cocoa Touch体系内,MVC是广为人知的经典架构,博主之前也讲解过MVC的相关知识,但是随着业
初始化(Initialization) 存储属性必须有初值。可以在声明时赋缺省值,也可以在构造器赋初值。 存储属性为可选值时,其缺省值为nil。 赋初值时属性观测器不会被调用。 构造器(Initializers)语法形式为 init(外部名1 内部名1: 类型1, 外部名2 内部名2: 类型2 ...) 缺省形式为 init(外部名1兼内部名1: 类型1, 外部名2兼内部名2: 类型2 ...)
0、效果图: 1、语言:swift2 2、工具:Xcode7.2 3、系统版本: MAC OS X 10.10.5 3、准备的材料: A、swift使用sqlite的代码封装文件,(这是我在github上找到的开源代码)我准备好了,传送门:这里。 B、sqlite图形化管理工具:SQLiteManager, 我也准备好了。传送门:来吧,点我。 4、用SQLiteM
Swift3语法变化 Swift3和Swift2对比,更加安全和更加的面向对象了 Swift3废弃了旧版本的C类型的GCD写法,而换成了更加面向对象的全新的GCD写法 DispatchQueue.global().async {
DispatchQueue.main.async {
callBack("{\"name\": \"xiaoming\"}");
}
}
Swift 2引入了guard关键字,可以用来确保各种数据配置准备就绪。我在 this website上看到的一个例子演示了一个submitTapped函数: func submitTapped() {
guard username.text.characters.count > 0 else {
return
}
print("All good")
}
假设我想用一个空格分隔一个字符串。此代码段在Swift 1.x中正常工作。它不工作在Swift 2在Xcode 7 Beta 1。 var str = "Hello Bob"
var foo = split(str) {$0 == " "} 我得到以下编译器错误: Cannot invoke 'split' with an argument list of type '(String, (_) -
我有以下问题。我使用下面的代码,我得到的问题 “Variable ‘characteristic’ was never mutated; consider changing to ‘let’ constant” for var characteristic:CBCharacteristic in service.characteristics ?? [] {
print(str)
为什么这个Swift 2.0代码不编译? protocol P { }
struct S: P { }
let arr:[P] = [ S() ]
extension Array where Element : P {
func test<T>() -> [T] {
return []
}
}
let result : [S] = arr.test() 编译器
我有以下的守卫片段,这是产生错误的’守卫身体可能不会通过’。怎么了? guard NSFileManager.defaultManager().fileExistsAtPath(appBundlePath) else {
print("App bundle doesnt exist")
} 警卫声明需要有一些东西来使程序的流程远离封闭的范围(例如,最可能的情况是返回从函数返回)。
protocol Car {
var wheels : Int { get set}
init(wheels: Int)
}
extension Car {
init(wheels: Int) {
self.wheels = wheels
}
} on self.wheelels = wheel我得到错误 Error: variable '
我有一个主类,还提供一个命名空间: class A {
} 和通过扩展名添加的嵌套类(全部为了使用单独的文件): extension A {
class B {
}
} 我想通过扩展嵌套类(B)来添加功能;我试过了: extension A.B {
} 我得到“’B’不是”A“的成员类型。 (我也尝试了一些不那么合理的事情,但我会省略他们,以避免尴尬。阅读Swift文档和谷歌的“快速嵌套类
在几个我的旧代码的情况下,我得到警告: Immutable value X is never used consider replacing with ‘_’ 例如,如果我正在检查一个具有关联对象的枚举(但是在这种情况下不使用对象) – 或者如果我使用’If let’构造来检查对象是否为零。 它并不打扰我这些警告并做出改变,但我想知道是否有人知道为什么这是推荐的 – 为什么要警告我们这个?它会以任
什么是正确的方式使用for-in循环与可选? 现在我在循环之前总是执行一个可选的绑定。还有其他成语吗? let optionalInt:[Int]? = [1, 2, 3]
if let optionalInt = optionalInt {
for i in optionalInt {
print(i)
}
} 我不认为有正当的方法。有许多不同的方式,它真的归结于你喜欢的,Sw