首页 文章 精选 留言 我的

精选列表

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

Swift初体验(三)

var sex: String? var identify: PersonIdentify? // 构造器中,第一个參数依旧会创建一个和局部參数名称同样的外部參数名称 init(name: String, sex: String, identify: PersonIdentify){ self.name = name; self.sex = sex; self.identify = identify } func description() -> String{ // 调用枚举值的toRaw()方法能够获取到枚举值的初值 return "name = \(name) sex = \(sex) course = \(identify!.toRaw())" } // 在类中假设实现协议中定义的mutating方法,那么不须要加"mutating"keyword func aMutatingMethod(){ } class func aTypeMethod(){ } } var person1 = Person(name:"humingtao",sex:"m",identify:.Student) var person2 = Person(name:"kebi",sex:"m",identify:.Teacher) switch(person1.identify!){ case .Teacher: println("I am a teacher") case .Student: println("student") } class Student:Person{ var number: String? // 在类中,类型属性仅仅能够是计算属性,可是在枚举和结构体中,既能够是计算属性,也能够是存值属性 // 在类中,声明一个类型属性的keyword是class,在结构体和枚举中是static class var attendClassTime: String{ return "9:30" } init(name: String, sex: String, number: String){ super.init(name: name, sex: sex, identify: .Student) self.number = number } } var student1 = Student(name: "hmt",sex: "m",number: "12345678") class Teacher:Person{ var course: String? init(name: String, sex: String, course: String){ super.init(name: name, sex: sex, identify: .Teacher) self.course = course } override func description() -> String{ return super.description() + "" + "course = \(course)" } } // 思考为什么加"?" class course{ var name: String? init(name: String){ self.name = name } } 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5209449.html,如需转载请自行联系原作者

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

Swift:属性观察器

1、简单介绍 属性观察器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性观察器,甚至新的值和现在的值相同的时候也不例外。 可以为除了延迟存储属性之外的其他存储属性添加属性观察器,也可以通过重载属性的方式为继承的属性(包括存储属性和计算属性)添加属性观察器。 注意: 不需要为无法重载的计算属性添加属性观察器,因为可以通过 setter 直接监控和响应值的变化。 2、监测方式 可以为属性添加如下的一个或全部观察器: willSet在设置新的值之前调用 didSet在新的值被设置之后立即调用 分析: willset观察器会将新的属性值作为固定参数传入,在willSet的实现代码中可以为这个参数指定一个名称,如果不指定则参数仍然可用,这时使用默认名称 newValue表示。类似地,didSet观察器会将旧的属性值作为参数传入,可以为该参数命名或者使用默认参数名oldValue。 注意: willSet和didSet观察器在属性初始化过程中不会被调用,它们只会当属性的值在初始化之外的地方被设置时被调用。 3、实现例子: class Student{ var score:Int = 0{ willSet{ print("About to set score to \(newValue)") } didSet{ if score > oldValue { print("这次分数进步了 \(score - oldValue) scores") } } } } let student = Student() student.score = 80 student.score = 90 student.score = 100 打印结果: About to set score to 80 进步了 80 scores About to set score to 90 进步了 10 scores About to set score to 100 进步了 10 scores 程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式! 本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/6241628.html ,如需转载请自行联系原作者

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

iOS - Swift Range 范围

前言 Range:结构体,这个结构体用来表示一个区间的范围。 public struct Range<Element : ForwardIndexType> : Equatable, CollectionType, CustomStringConvertible, CustomDebugStringConvertible NSRange:结构体,这个结构体用来表示事物的一个范围,通常是字符串里的字符范围或者集合里的元素范围。 public typealias NSRange = _NSRange public struct _NSRange { public var location: Int public var length: Int public init() public init(location: Int, length: Int) } extension NSRange { public init(_ x: Range<Int>) @warn_unused_result public func toRange() -> Range<Int>? } 1、Range 结构体变量的创建与调用 // Range 结构体变量的创建与赋值 let str = "hello world" // 1..<9 let range1:Range = Range(1...8) // 2..<5 var range2:Range = Range(2..<5) // 3..<7 let range3:Range = str.startIndex.advancedBy(3)...str.startIndex.advancedBy(6) // Range 值的修改 range2.startIndex = 3 range2.endIndex = 6 // Range 值的判断 let bl:Bool = range2.isEmpty 2、NSRange 结构体变量的创建与调用 // NSRange 结构体变量的创建与赋值 // 先定义变量,再赋值 var nsRange1:NSRange = NSRange() nsRange1.location = 6; nsRange1.length = 1; // 定义时直接赋值 let nsRange2:NSRange = NSRange(location: 7, length: 2) // 由区间值创建 let nsRange3:NSRange = NSRange(2...9) // 由方法创建 let nsRange4:NSRange = NSMakeRange(1, 8) // NSRange 结构体变量值的调用 print("\(nsRange1.location), \(nsRange1.length)") 3、NSRange 与 Range 的相互转换 // Range 转 NSRange let nsRange:NSRange = NSRange(1...10) // NSRange 转 Range let range:Range? = nsRange.toRange() 4、NSRange 与 String 的相互转换 let nsRange1 = NSRange(location: 7, length: 2) // NSRange 转 String let string:String = NSStringFromRange(nsRange1) // String 转 NSRange let nsRange:NSRange = NSRangeFromString(string)

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册