Below you will find pages that utilize the taxonomy term “Swift”
May 1, 2015
ios8中action segue
"\u003cp\u003eos8 action segue 有几种方法,一般选择哪一个,每种方法都有什么用,在什么环境下使用?\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2015/05/57_400607_5f360e47ff35d47.jpg\"\u003e\u003cimg src=\"http://blogx.haohtml.com/wp-content/uploads/2015/05/57_400607_5f360e47ff35d47.jpg\" alt=\"57_400607_5f360e47ff35d47\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eApple的解释在这里: \u003ca href=\"https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/chapters/StoryboardSegue.html\"\u003ehttps://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/chapters/StoryboardSegue.html\u003c/a\u003e\n我的翻译:\n\u003cstrong\u003eShow\u003c/strong\u003e: 在master或detail区域展现内容(典型的如iPad的设置界面,左侧是master,右侧是detail),究竟是在哪个区要取决于屏幕上的内容,如果不分master/detail,就单纯的把新的内容push到当前view controller stack的顶部\n\u003cstrong\u003eShow Detail\u003c/strong\u003e: 大致同Show,在detail区域展现内容,如果不分master/detail,新的内容取代当前view controller stack的顶部\n\u003cstrong\u003ePresent Modally\u003c/strong\u003e:模态展示内容\n\u003cstrong\u003ePresent as Popover\u003c/strong\u003e:在当前的view上出现一个小窗口来展示内容,无处不在的“选中文字后出现 复制/翻译 按钮就是这个\n\u003cstrong\u003eCustom\u003c/strong\u003e:自定义 …\u003c/p\u003e"
June 19, 2014
Swift中的标准函数
"\u003cp\u003eSwift中共有74个内建函数,但是在Swift官方文档(“ \u003ca href=\"https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097\"\u003eThe Swift Programming Language\u003c/a\u003e”)中只记录了7中。剩下的67个都没有记录。\u003c/p\u003e\n\u003cp\u003e本文将列举Swift所有的内建函数。本文中提到的所谓的内建函数是指那些在Swift中不需要导入任何模块(如Foundation等)或者引用任何类就可以使用的函数。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eabs(signedNumber)\u003c/strong\u003e: 返回给定的有符号数字的绝对值。很简单,但是没有在文档中记录。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eabs(-1) == 1\u003c/li\u003e\n\u003cli\u003eabs(-42) == 42\u003c/li\u003e\n\u003cli\u003eabs(42) == 42\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003econtains(sequence, element)\u003c/strong\u003e: 如果给定的序列(如数组)包含特定的元素,则返回true。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003evar languages = [“Swift”, “Objective-C”]\u003c/li\u003e\n\u003cli\u003econtains(languages, “Swift”) == true\u003c/li\u003e\n\u003cli\u003econtains(languages, “Java”) == false\u003c/li\u003e\n\u003cli\u003econtains([29, 85, 42, 96, 75], 42) == true\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003edropFirst(sequence)\u003c/strong\u003e: 返 …\u003c/p\u003e"
June 15, 2014
Swift中的柯里化函数
"\u003cp\u003e柯里化函数(curried function)的类型相当于一个嵌套函数类型。例如,下面的柯里化函数 \u003ccode\u003eaddTwoNumber()()\u003c/code\u003e 的类型是 \u003ccode\u003eInt -\u0026gt; Int -\u0026gt; Int\u003c/code\u003e:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-lang-swift\" data-lang=\"lang-swift\"\u003efunc addTwoNumbers(a: Int)(b: Int) -\u0026gt; Int{\n return a + b\n}\naddTwoNumbers(4)(5) // returns 9\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e柯里化函数的函数类型从右向左组成一组。例如,函数类型 \u003ccode\u003eInt -\u0026gt; Int -\u0026gt; Int\u003c/code\u003e 可以被理解为 \u003ccode\u003eInt -\u0026gt; (Int -\u0026gt; Int)\u003c/code\u003e——也就是说,一个函数传入一个 \u003ccode\u003eInt\u003c/code\u003e 然后输出作为另一个函数的输入,然后又返回一个 \u003ccode\u003eInt\u003c/code\u003e。例如,你可以使用如下嵌套函数来重写柯里化函数 \u003ccode\u003eaddTwoNumbers()()\u003c/code\u003e:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-lang-swift\" data-lang=\"lang-swift\"\u003efunc addTwoNumbers(a: Int) -\u0026gt; (Int -\u0026gt; Int){\n func addTheSecondNumber(b: Int) -\u0026gt; Int{\n return a + b\n } …\u003c/code\u003e\u003c/pre\u003e"
June 12, 2014
Swift中的结构体与类的区别(有坑存在)
"\u003ch2 id=\"-\"\u003e结构体和枚举是值类型\u003c/h2\u003e\n\u003cp\u003e在 Swift 中,所有的基本类型:整数(Integer)、浮点数(floating-point)、布尔值(Booleans)、字符串(string)、数组(array)和字典(dictionaries),都是值类型,并且都是以结构体的形式在后台所实现。\u003c/p\u003e\n\u003cp\u003e在 Swift 中,所有的结构体和枚举都是值类型。这意味着它们的实例,以及实例中所包含的任何值类型属性,在代码中传递的时候都会被复制。\u003c/p\u003e\n\u003ch2 id=\"-\"\u003e类是引用类型\u003c/h2\u003e\n\u003cp\u003e与值类型不同,引用类型在被赋予到一个变量,常量或者被传递到一个函数时,操作的并不是其拷贝。因此,引用的是已存在的实例本身而不是其拷贝。\u003c/p\u003e\n\u003ch1 id=\"恒等运算符\"\u003e恒等运算符\u003c/h1\u003e\n\u003cp\u003e因为类是引用类型,有可能有多个常量和变量在后台同时引用某一个类实例。(对于结构体和枚举来说,这并不成立。因为它们作值类型,在被赋予到常量,变量或者传递到函数时,总是会被拷贝。)\u003c/p\u003e\n\u003cp\u003e如果能够判定两个常量或者变量是否引用同一个类实例将会很有帮助。为了达到这个目的,Swift 内建了两个恒等运算符:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e等价于 ( === )\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e不等价于 ( !== )\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e以下是运用这两个运算符检测两个常量或者变量是否引用同一个实例:\u003c/p\u003e\n\u003cp\u003eif …\u003c/p\u003e"
June 12, 2014
Swift中的函数
"\u003cp\u003e对于Swift语言中的函数还是有许多与其它语言不同的地方的。如下:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1. 对于指定函数黑夜参数值的函数,在调用函数的时候,如果需要指定参数值的话,需要以“参数名:值”这种格式调用\u003c/strong\u003e\nfunc join(s1:String, s2: String, joinstr: String = “-“) -\u0026gt; String {\nreturn s1 + joinstr + s2\n}\u003c/p\u003e\n\u003cp\u003elet result = join(“hello”, “world”, joinstr:”===”) //或者直接写前两个值\nprintln(result)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2. 常量参数和变量参数(Constant and Variable Parameters)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e数参数默认是常量。试图在函数体中更改参数值将会导致编译错误。这意味着你不能错误地更改参数值。\u003c/p\u003e\n\u003cp\u003e但是,有时候,如果函数中有传入参数的变量值副本将是很有用的。你可以通过指定一个或多个参数为变量参数,从而避免自己在函数中定义新的变量。变量参数不是常量,你可以在函数中把它当做新的可修改副本来使用。\u003c/p\u003e\n\u003cp\u003e通过在参数名前加关键字 \u003ccode\u003evar\u003c/code\u003e 来定义变量参数:\u003c/p\u003e\n\u003cp\u003efunc …\u003c/p\u003e"
June 11, 2014
Swift编程语言中的optional(可选)
"\u003ch2 id=\"-\"\u003e可选\u003c/h2\u003e\n\u003cp\u003e使用可选来处理值可能缺失的情况。可选表示:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e有值,等于 x\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e或者\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e没有值\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e注意:C 和 Objective-C 中并没有可选这个概念。最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回 \u003ccode\u003enil\u003c/code\u003e, \u003ccode\u003enil\u003c/code\u003e 表示“缺少一个合法的对象”。然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如 \u003ccode\u003eNSNotFound\u003c/code\u003e)来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而,Swift 的可选可以让你暗示任意类型的值缺失,并不需要一个特殊值。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e来看一个例子。Swift 的 \u003ccode\u003eString\u003c/code\u003e 类型有一个叫做 \u003ccode\u003etoInt\u003c/code\u003e 的方法,作用是将一个 \u003ccode\u003eString\u003c/code\u003e 值转换成一个 \u003ccode\u003eInt\u003c/code\u003e 值。然而,并不是所有的字符串都可以转换成一个整数。字符串 \u003ccode\u003e\u0026quot;123\u0026quot;\u003c/code\u003e 可以被转换成数字 \u003ccode\u003e123\u003c/code\u003e,但是字符串 \u003ccode\u003e\u0026quot;hello, world\u0026quot;\u003c/code\u003e 不行。\u003c/p\u003e\n\u003cp\u003e下面的例子使用 \u003ccode\u003etoInt\u003c/code\u003e 方法来尝试将一个 \u003ccode\u003eString\u003c/code\u003e 转换成 \u003ccode\u003eInt\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003elet …\u003c/p\u003e"
June 10, 2014
Swift中的字典
"\u003cp\u003e//1.创建字典\u003c/p\u003e\n\u003cp\u003evar dict:Dictionary\u0026lt;Int, String\u0026gt; = [:“美国“,1:“中国“, 2:“英国“]\u003c/p\u003e\n\u003cp\u003evar country = [\u003c/p\u003e\n\u003cp\u003e“china”: “中国“,\u003c/p\u003e\n\u003cp\u003e“en”:“英国“,\u003c/p\u003e\n\u003cp\u003e“usa”:“美国“\u003c/p\u003e\n\u003cp\u003e]\u003c/p\u003e\n\u003cp\u003e//创建一个空的字典\u003c/p\u003e\n\u003cp\u003evar emptyDictionary = Dictionary\u0026lt;String, Float\u0026gt;()\u003c/p\u003e\n\u003cp\u003evar emptyDictionary2 = [:]\u003c/p\u003e\n\u003cp\u003efor (key,value) incountry {\u003c/p\u003e\n\u003cp\u003evar result = key + value\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003cp\u003e//2.获取字典中的所有键名和键值及字典元素个数\u003c/p\u003e\n\u003cp\u003evar keys = Array(country.keys)\u003c/p\u003e\n\u003cp\u003evar values = Array(country.values)\u003c/p\u003e\n\u003cp\u003evar cnum = country.count\u003c/p\u003e\n\u003cp\u003e//3.访问字典\u003c/p\u003e\n\u003cp\u003evar value = dict[]\u003c/p\u003e\n\u003cp\u003evar value2 = country[“china”]\u003c/p\u003e\n\u003cp\u003e//4.修改字典,修改后,字典中的位置会发生改变\u003c/p\u003e\n\u003cp\u003ecountry[“china”] = “中华人民 …\u003c/p\u003e"
June 10, 2014
swift中的数组操作
"\u003cp\u003evar shopCart: String[] = [“苹果“, “桔子“, “荔枝“]\u003c/p\u003e\n\u003cp\u003evar shoppingList = [“catfilsh”, “water”, “tulips”]\u003c/p\u003e\n\u003cp\u003e//创建一个空数组\u003c/p\u003e\n\u003cp\u003evar emptyArray = String\u003ca href=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e//数组遍历\u003c/p\u003e\n\u003cp\u003efor str inshopCart {\u003c/p\u003e\n\u003cp\u003e println(str)\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003cp\u003e//带索引值的遍历\u003c/p\u003e\n\u003cp\u003efor (index, value) inenumerate(shopCart) {\n println(“(index+1):(value)“)\n}\u003c/p\u003e\n\u003cp\u003e//判断数组是否为空及数组元素个数\u003c/p\u003e\n\u003cp\u003eifshopCart.isEmpty {\u003c/p\u003e\n\u003cp\u003eprintln(“购物车中无任何商品,请购买”)\u003c/p\u003e\n\u003cp\u003e} else {\u003c/p\u003e\n\u003cp\u003eprintln(“您当前购物车中共 (shopCart.count) 有件商品”)\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003cp\u003eprintln(“=================”)\u003c/p\u003e\n\u003cp\u003e//数组元素添加,{苹果 桔子 荔枝 芒果}\u003c/p\u003e\n\u003cp\u003eshopCart.append(“芒果“)\u003c/p\u003e\n\u003cp\u003efor str inshopCart {\u003c/p\u003e\n\u003cp\u003eprintln(str)\u003c/p\u003e\n\u003cp\u003e} …\u003c/p\u003e"