首页 文章 精选 留言 我的

精选列表

搜索[Swift开发],共10000篇文章
优秀的个人博客,低调大师

swift-辞典NSDictionary定义,变化的关键,删/加入关键

// Playground - noun: a place where people can play import UIKit //------------------------------------------------------------------------------ // 1. 定义固定格式的字典 // dict1的全部“键值”类型一致(都是字符串) var dict1 = ["name": "mary", "age": "18"] //------------------------------------------------------------------------------ // 2. 在定义字典是能够直接指定字典中"键名"和"键值"的类型 // 一旦指定了字典的键名和键值类型,则不能再改动 var ages: Dictionary<String, Int> = ["jack": 20, "rose": 19] //------------------------------------------------------------------------------ // 3. 字典操作 // 对于格式固定的字典是能够直接操作的 // 1> 用键值获取字典键值,因为字典格式固定,因此无需在指定变量类型 // *** 注意"指定/取消"取值类型指定的执行结果是不同的 var name = dict1["name"] // as String name = "mike " + "\(name)" // *** 因为从字典获取数值时,可能会得到一个nil,因此假设须要对数据做兴许处理。须要推断一下 if var age = dict1["age"]?.toInt() { age += 20 } // 2> 改动字典键值的两种方法 dict1["name"] = "rose" dict1 dict1.updateValue("18", forKey: "age") dict1 // 3> 删除某一个键值 dict1.removeValueForKey("age") dict1 // 4> 加入新的键值对 dict1["height"] = "1.65" dict1 版权声明:本文博主原创文章。博客,未经同意不得转载。 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4916283.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

《从零开始学Swift》学习笔记(Day 51)——扩展构造函数

扩展类型的时候,也可以添加新的构造函数。值类型与引用类型扩展有所区别。值类型包括了除类以外的其他类型,主要是枚举类型和结构体类型。 值类型扩展构造函数 扩展结构体类型中定义构造函数的示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 structRectangle{ varwidth:Double varheight:Double init(width:Double,height:Double){ self.width=width self.height=height } } extensionRectangle{ //定义了Rectangle的扩展类型 init(length:Double){ self.init(width:length,height:length) } } varrect=Rectangle(width: 320.0 ,height: 480.0 ) //调用两个参数的构造函数,这个构造函数是原始类型提供,Rectangle类型已经是扩展类型 print( "长方形:\(rect.width)x\(rect.height)" ) varsquare=Rectangle(length: 500.0 ) //调用一个参数的构造函数,这个构造函数是扩展类型提供的 print( "正方形:\(square.width)x\(square.height)" ) self.init是调用了原始类型的两个参数的构造函数。 引用类型扩展构造函数 扩展类中定义构造函数的示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Person{ varname:String varage:Int funcdescription()->String{ return "\(name)年龄是:\(age)" } init(name:String,age:Int){ self.name=name self.age=age } } extensionPerson{ //定义Person类的扩展类型 convenienceinit(name:String){ //便利构造函数 self.init(name:name,age: 8 ) } } letp1=Person(name: "Mary" ) //调用两个参数的构造函数,这个构造函数是原始类型提供,这时候的Person类型已经是扩展类型。 print( "Person1:\(p1.description())" ) letp2=Person(name: "Tony" ,age: 28 ) //调用一个参数的构造函数创建Person实例,这个构造函数是扩展类型提供的。 print( "Person2:\(p2.description())" ) 代码self.init(name :name, age : 8)调用指定构造函数代理部分构造任务。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1748298,如需转载请自行联系原作者

优秀的个人博客,低调大师

《从零开始学Swift》学习笔记(Day 23)——尾随闭包

闭包表达式可以作为函数的参数传递,如果闭包表达式很长,就会影响程序的可读性。尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。 下面我们来看一个示例代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 funccalculate(opr:String,funN:(Int,Int)->Int){ //最后一个参数funN是(Int,Int)->Int函数类型,funN可以接收闭包表达式 switch (opr){ case "+" : print( "10+5=\(funN(10,5))" ) default : print( "10-5=\(funN(10,5))" ) } } calculate( "+" ,funN:{(a:Int,b:Int)->Intin return a+b}) //调用 calculate( "+" ){(a:Int,b:Int)->Intin return a+b} //调用,这种形式就是尾随闭包 calculate( "+" ){$ 0 +$ 1 } //调用,这种形式就是尾随闭包 需要注意的是,闭包必须是参数列表的最后一个参数,如果calculate函数采用如下形式定义: func calculate(funN:(Int,Int)->Int,opr:String) { ... } 由于闭包表达式不是最后一个参数,那么调用calculate函数就不能使用尾随闭包写法的。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746417,如需转载请自行联系原作者

优秀的个人博客,低调大师

Swift使用CoreLocation,你必须要看这一篇

CoreLocation,在我们这里讨论的是一个最常用的东西,就是用Location Manger获取用户当前的位置。 整个的来说非常简单。只要这样: import CoreLocation 需要使用整个框架,那么引入整个框架就是必须的。然后需要在你的类里实现一个protocol。就是CLLocationManagerDelegate,并在代码中实现protocol里的相关方法。分别是这样喝这样: class ViewController: UIViewController, CLLocationManagerDelegate //MARK: CoreLocationManagerDelegate func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!){ println("get location") var location:CLLocation = locations[locations.count-1] as CLLocation if (location.horizontalAccuracy > 0) { self.locationManager.stopUpdatingLocation() println(location.coordinate) self.textLabel.text = "latitude \(location.coordinate.latitude) longitude \(location.coordinate.longitude)" } } func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) { println(error) self.textLabel.text = "get location error" } 这些代码的功能也很简单。获取用户的经度和纬度,之后在界面的UILabel中显示出来。 在viewWillAppear中开始获取地理位置,在viewDidDisappear里停止。手机费电的几个地方就包括地理位置过度频繁的更新这一项。所以,一定要记得不用的时候就不要再请求系统的GPS数据。否则,用户在设置的费电大户里是看得到的。 override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) self.locationManager.startUpdatingLocation() } override func viewDidDisappear(animated: Bool) { super.viewDidDisappear(animated) self.locationManager.stopUpdatingLocation() } 只有这些代码还是没有办法工作的。因为,在iOS8里修改了政策。Look here if self.locationManager.respondsToSelector("requestAlwaysAuthorization") { println("requestAlwaysAuthorization") self.locationManager.requestAlwaysAuthorization() } 这个是为了兼容iOS7和iOS8的代码,加入了一个判断。在iOS8中需要询问用户是否同意使用位置信息,否则的话该功能不可用。那么加这个就可以么?NO!!!还需要在,这里就是重点了。在plist文件里配置一个选项。 说到具体的配置有两个,分别是:requestWhenInUseAuthorization()和requestAlwaysAuthorization()这两个请求方法。一个是用户使用的时候才用到定位,一个是一直在后台获取更新的定位信息。最后的一个在一定的时候会触发一个系统的提醒,说这个APP一直在后台获取你的位置信息是否允许之类的。这两个请求方法对应的plist配置也不一样,分别是NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription。至于在plist添加的方法,就是在plist中添加一个键值对,然后把请求允许对应的Key值复制粘贴进去就可以了。value值是什么都可以,这个值会在请求允许的对话框中显示出来给用户看。总之是你自己定的。 运行你的APP,你会看到请求提示了: 欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处! 本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/p/4147165.html ,如需转载请自行联系原作者

优秀的个人博客,低调大师

《从零开始学Swift》学习笔记(Day 37)——默认构造函数

结构体和类的实例在构造过程中会调用一种特殊的init方法,称为构造函数。构造函数没有返回值,可以重载。在多个构造函数重载的情况下,运行环境可以根据它的外部参数名或参数列表调用合适的构造函数。 默认构造函数 结构体和类在构造过程中会调用一个构造函数,即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数。下面看示例代码: 1 2 3 4 5 6 7 8 9 10 class Rectangle{ varwidth:Double= 0.0 varheight:Double= 0.0 } varrect=Rectangle() //创建实例,并调用默认构造函数init() rect.width= 320.0 rect.height= 480.0 print( "长方形:\(rect.width)x\(rect.height)" ) Rectangle()表示调用了某个方法,这个方法就是默认构造函数init()。 事实上,在Rectangle的定义过程中省略了构造函数,相当于如下代码: 1 2 3 4 5 6 7 8 class Rectangle{ varwidth:Double= 0.0 varheight:Double= 0.0 init(){ } } 如果Rectangle是结构体,则它的定义如下: 1 2 3 4 structRectangle{ varwidth:Double= 0.0 varheight:Double= 0.0 } 而结构体Rectangle的默认构造函数与类Rectangle的默认构造函数是不同的,相当于如下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 structRectangle{ varwidth:Double= 0.0 varheight:Double= 0.0 init(){ } init(width:Double,height:Double){ //有参数的构造函数 self.width=width self.height=height } } 要调用哪个构造函数是根据传递的参数名和参数类型决定的。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746995,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册