Swift

Swift 是一种支持多编程范式和编译式的编程语言,是用来撰写 macOS / OS X、iOS、watchOS 和 tvOS 的语言之一。

  • Total
  • 1129
话题聚合
  • iOS 快速从OC过渡到Swift,由理论到实战-OC和Swift混编

    iOS 快速从OC过渡到Swift,由理论到实战-OC和Swift混编

    {???return?UserDefaults.standard.object(forKey:?Key)}func?RemoveObjectForKey(_?Key:String){????UserDefaults.standard.removeObject(forKey:?Key)????UserDefaults.standard.synchronize()}//?MARK:?--------------------------?输出?--------------------------//?带方法名、行数func?printLog(_?message:T,method:String?=?#function,line:Int?=?#line){????print("-[method:(method)]?"?+?"[line:(line)]?"?+?"(message)")}//?只在Debug下输出,为了给习惯OC输出写法的同事func?DLog(_?format:?String,?method:String?=?#function,line:Int?=?#line,_?args:?CVarArg...){//????print("-[method:(method)]?"?+?"[line:(line)]?",?separator:?"",?terminator:?"")????#if?DEBUG????????let?va_list?=?getVaList(args)????????NSLogv(format,?va_list)????#else????#endif}//?只在Debug下输出,为了为习惯PHP输出写法的同事func?echo(_?format:?String,_?args:?CVarArg...)?{????#if?DEBUG????????let?va_list?=?getVaList(args)????????NSLogv(format,?va_list)????#else????#endif}使用【扩展】功能创建一些工具颜色类extension?UIColor?{????//?RGB颜色????static?func?rgba(_?r:CGFloat,_?g:CGFloat,_?b:CGFloat,_?a:CGFloat)?->...return?rgb(CGFloat(r),?CGFloat(g),?CGFloat(b))????}????///?随机色????static?var?rand:?UIColor?{????????return?rgb(CGFloat(arc4random_uniform(255)),?CGFloat(arc4random_uniform(255)),?CGFloat(arc4random_uniform(255)))????}}字符转数字类extension?String?{????///?将字符串转换为合法的数字字符????///????///?-?Returns:?String类型????func?toPureNumber()?->...我们在用户点击事件中将对应数据回传到 OC 页面中去func?tableView(_?tableView:?UITableView,?didSelectRowAt?indexPath:?IndexPath)?{????????tableView.deselectRow(at:?indexPath,?animated:?true)????????//?我们将前十项的数据使用代理方法回传,剩余的数据使用闭包方式回传????????if?indexPath.row?>。
    3 小时前
  • iOS 快速从OC过渡到Swift,由理论到实战-Swift基础

    iOS 快速从OC过渡到Swift,由理论到实战-Swift基础

    Int?{????var?total:?Int?=?0????//?和OC实现不定参数不同,Swift已将不定参转换为数组????for?number?in?numbers?{????????total?+=?number????}????return?total}print("(sumFunc2(1,2,3,4,5))")?//?输出?15/*?输入输出参数?如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就可以将这个参数定义为输入输出参数?这有点类似OC中常见的NSError的使用,他们的本质是接受一个地址,直接操作内存地址进行修改和访问?可是使用?inout?关键字来定义输入输出参数,需要注意的是,在新版本中,已经将?inout?放在了?'参数名:'?后面,而不是前面?*/func?swapTwoObj(_?a:?inout?String,?_?b?:?inout?String)?{????(a,?b)?=?(b,?a)}var?str1?=?"123"var?str2?=?"456"swapTwoObj(&...class?Person?{????//?Swift中一个不继承于任何其他基类,那么此类本身就是一个基类????//?定义属性,Swift中有两种属性,一个是计算属性,一种是存储属性????//?实例属性????var?name:String?????//?存储属性????var?height?=?0.0????//?存储属性????var?info:?String?{??//?计算属性????????return?"(name)"?+?"(height)"????}????//?类型属性????static?var?address?=?"fuzhou"????//?懒加载,必须是变量,并且需要一个初始值????lazy?var?data:?[String]?=?[String]()????//?构造方法,注意如果不编写构造方法,默认自动创建一个无参数的构造方法????init(name:String?,height:Double)?{????????self.name?=?name????????self.height?=?height????}????//?遍历构造器,提供默认值来简化构造方法实现????convenience?init(name:String)?{????????self.init(name:?name,?height:?170.0)????}????//?定义方法????//?实例方法????func?showMessage()?{????????print("name=(self.name),height=(height)")????}????//?类型方法,结构体中使用?static?关键字????class?func?sayHello()?->...a. 枚举语法使用 enum 关键字来创建枚举enum?SomeEnumeration?{????//?枚举定义放在这里}示例//?单行enum?Season{????case?spring,?summer,?autumn,?winter}//?多行,并指定原始值enum?Week:?Int?{????case?monday?????=?1????case?tuesday????=?2????case?wednesday??=?3????case?thursday???=?4????case?friday?????=?5????case?saturday???=?6????case?sunday?????=?7}print("(Week.friday)")?????????????//?输出?fridayprint("(Week.friday.rawValue)")????//?输出?5枚举类型也可以拥有一些结构体的特性,如计算属性、构造方法、方法等enum?Week:?Int?{????case?monday?????=?1????case?tuesday????=?2????case?wednesday??=?3????case?thursday???=?4????case?friday?????=?5????case?saturday???=?6????case?sunday?????=?7????//?定义计算属性(枚举中不能使用存储属性)????var?tag:?Int?{????????return?self.rawValue????}????//?定义类型计算属性????static?var?enumName:String?{????????return?"Week"????}????//?定义实例方法????func?showRowValue()?{????????print("(self.rawValue)")????}????//?定义类型方法????static?func?showInfo()?{????????print("Enum?name?is?(Week.enumName)")????}????//?定义构造方法,因为可能构造失败返回nil,因此需要返回值为可选类型????init。
    3 小时前
  • 小即是大:框不住的生动,宏碁蜂鸟Swift3轻盈来袭

    小即是大:框不住的生动,宏碁蜂鸟Swift3轻盈来袭

    宏碁的蜂鸟系列一直受到大家喜爱,这次为了满足大家更个性更细致的需求,宏碁蜂鸟系列推出了13. 3 英寸的高色域轻薄本Swift3,它画面生动逼真、A4 纸大小超轻薄,更有长效续航,满足生活中不同角色的转换,一台笔记本解决出行、娱乐、学习工作等问题,小机身带来大改变...近几年,轻生活、轻小说、轻服务、轻社交等词汇出镜率越来越高,“轻”已经成为这个时代大家选择的标准,宏碁当然也不会落伍,新款蜂鸟Swift3 如A4 纸大小般的小巧机身,轻至1.3kg,薄至15.9mm,可以轻松放入各种随身包中,出行不受束缚...宏碁本次选择6.1mm微边框的设计,让小机身也可以享受到大屏幕,最厉害的是蜂鸟Swift3 屏幕还配置了72% NTSC 高色域IPS广视角的全高清显示屏,很多朋友可能不了解色域,其实它代表了显示器的色彩表现力,色域越广色彩越丰富,表现出来的色彩就越接近真实世界和人眼的极限值,无论是图片、视频还是玩游戏,都能让我们有身临其境的逼真感。
    7 小时前
  • [图]完全使用Swift编写的Telegram X即将面向所有iOS用户开放

    [图]完全使用Swift编写的Telegram X即将面向所有iOS用户开放

    虽然目前尚不清楚稳定版何时被完全替代,但是Telegram的首席执行官、联合创始人Pavel Durov今天宣布主iOS APP将接收所有实验版本的改进...图片来自于 TelegramPavel Durov在自己的个人频道中宣布,iOS端官方Telegram应用即将被正在测试的版本所替代,目前尚不清楚这是否意味着这些实验版本就此终结...Durov表示,完全使用Swift语言进行编写让Telegram成为了最受欢迎的信息应用,带来了更快的速度、更流畅的性能,并减少了对设备电池寿命的影响。
    8 小时前
  • Swift 4.2 正式发布:泛型改进 更快更兼容

    Swift 4.2 正式发布:泛型改进 更快更兼容

    随着对 conditional conformance...SE-0197 Adding in-place removeAll(where:) to the Standard LibrarySE-0199 Adding toggle to BoolSE-0202 Random UnificationSE-0204 Add last(where:) and lastIndex(where:) MethodsSE-0206 Hashable EnhancementsSE-0207 Add an allSatisfy algorithm to Sequence二进制兼容性Swift 4.2 使语言更接近稳定的 ABI ,为未来的 Swift 版本实现二进制兼容性...其他语言和编译器更新Swift 4.2 包含许多对开发者体验有显着影响的改进,包括:Support for batch mode compilation resulting in faster build timesChange in calling convention for retain/release cycle to reduce code size and improve runtime performanceLazier SIL deserialization with -OnoneRecursive metadata supportMore compact reflection metadataDefault arguments are inlined at call sitesSome long-standing bug fixes, including init declname, switch with multiple case labels per block, inheritance of generic initializers, and moreSwift 4.2 还实现了 Swift Evolution 上的一些提案:SE-0054 Abolish ImplicitlyUnwrappedOptional type. Read even more details about the reimplementation?here.SE-0079 Allow using optional binding to upgrade self from a weak to strong referenceSE-0193 Cross-module inlining and specializationSE-0194 Derived Collection of Enum CasesSE-0195 Introduce User-defined “Dynamic Member Lookup” TypesSE-0196 Compiler Diagnostic DirectivesSE-0205 withUnsafePointer(to:_:) and withUnsafeBytes(of:_:) for immutable valuesSE-0210 Add an offset(of:) method to MemoryLayoutSE-0212 Compiler Version Directive包管理器更新Swift 4.2 为 Swift 包管理器引入了新功能:支持批处理模式.?Swift targets will be now compiled using the Swift compiler’s batch mode.Improved scheme generation logic.?The scheme generation logic is improved and generates schemes as follows:One scheme containing all regular and test targets of the root package.One scheme per executable target containing the test targets whose dependencies intersect with the dependencies of the executable target.Automatic Xcode project generation.?The generate-xcodeproj has a new –watch option to watch the file system and automatically regenerate the Xcode project if needed. This uses the watchman tool to watch the required files.Swift 4.2 还实现了 Swift Evolution 上关于包管理器的一些提案:SE-0201 Package Manager Local Dependencies. SwiftPM now supports declaring dependency on a package using its path on disk instead of the git URL. This requires updating the package’s tools version to 4.2.SE-0208 Package Manager System Library Targets. The PackageDescription API in tools version 4.2 supports a new type of target “system library target”, which moves the current system-module packages feature from package to target level.SE-0209 Package Manager Swift Language Version API Update.?swiftLanguageVersions?property in PackageDescription manifest API for tools version 4.2 is changed from an array of Integers to an array of SwiftVersion enum.迁移说明和更新细节可查阅:https://swift.org/blog/swift-4-2-released/下载地址:https://swift.org/download/。
    2 天前
  • Swift 中的属性

    Swift 中的属性

    0 { radius = oldValue } } } var area: Double { get { return radius * radius * Double.pi } }}let circle = Circle()circle.radius = 5print("area: (circle.area)") //area: 78.5398163397448计算属性总是需要一个 getter...class Circle { var radius: Double var identifier: Int = 0 init(radius: Double) { self.radius = radius } }var circle = Circle(radius: 5)如果存储属性在对象实例化之后没有值,代码无法通过编译...public class Circle { public private(set) var area: Double = 0 public private(set) var diameter: Double = 0 public var radius: Double { didSet { calculateFigures() } } public init(radius:Double) { self.radius = radius calculateFigures() } private func calculateFigures() { area = Double.pi * radius * radius diameter = 2 * Double.pi * radius }}let circle = Circle(radius: 5)print("area: (circle.area)") //area: 78.5398163397448print("diameter: (circle.diameter)") //diameter: 31.4159265358979circle.area = 10 //编译错误:无法对 'area' 属性进行赋值,因为 setter 方法不可访问这里的属性 area 和 diameter 可以从类的外部访问,但只能在类内部赋值。
    2 天前
  • 苹果正式发布 Xcode 10:新 SDK、Swift 4.2、深色模式

    苹果正式发布 Xcode 10:新 SDK、Swift 4.2、深色模式

    苹果自家 IDE 开发环境 Xcode 正式更新至版本 10.0,带来 iOS 12、watchOS 5、tvOS 12 和 macOS Mojave 开发 SDK 以及 Swift 4.2 开发语言支持...除了配合 macOS Mojave 系统加入深色模式外,Xcode 10 还可以让开发者轻易开发出具有深色模式的应用...另外新版本还强化了代码协作、除错以及持续整合功能,Swift 编译速度也获得提升,在大型应用上甚至可以提升两倍速度。
    2 天前
  • 今天不聊远方,来聊聊Swift~

    今天不聊远方,来聊聊Swift~

    开始时间:2018-09-15 08:00 周六结束时间:2018-09-15 18:00 周六举办地点:北京市海淀区紫竹院路29号香格里拉大酒店第三届@Swift开发者大会,终于开始倒计时啦,错过还要再等一年...就在本周六,第三届@Swift开发者大会,我们与你不聊远方,只谈Swift...但是不变的是一年一度的@Swift开发者大会。
  • 宏碁Acer Swift 5新品发布:全球最轻15.6英寸笔记本

    宏碁Acer Swift 5新品发布:全球最轻15.6英寸笔记本

    宏碁Swift5 发布了两款产品,配置相同,只是根据用户的不同需求将尺寸分为15. 6 英寸和 14 英寸...」宏碁Swift5 最让人惊艳的是优雅轻薄的机身,15. 6 英寸的笔记本仅重990g,厚度也只有15.9mm ,十分适合随身携带,同时配备15. 6 英寸 Full HD 1920x1080 IPS触控屏幕,采用极窄边框设计,屏占比达到惊人的 87.6%,营造身历其境的视觉体验...宏碁公司以打破人与科技的藩篱为企业使命,为使用者推出设计完善的产品和各式解决方案,全球约有超过7, 000 名员工,致力于研发、设计、营销、售卖与产品服务,并在超过 160 个国家设有通路和销售产品。
    8 天前
  • Swift趣闻--同名就是伤害

    Swift趣闻--同名就是伤害

    学习了一遍swift4.1语法.2. DispatchQueue无法使用写着swift感觉就像回到了大学时代,满怀激动...赶紧新建一个项目,跑了下DispatchQueue.main.asyncAfter代码,God,执行是成功的...4. 总结系统或第三方用到的Module名称,千万不要与我们的Target同名,不然会碰到神都无法解的问题。
  • Swift 中的设计模式 #1 工厂方法与单例方法

    Swift 中的设计模式 #1 工厂方法与单例方法

    import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //在加载视图后进行添加设置,一般是从nib } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // 废弃掉那些可以被重新创建的资源 } @IBAction func drawCircle(_ sender: Any) { // 仅仅用于绘制形状 createShape(.circle, on: view) } @IBAction func drawSquare(_ sender: Any) { // 绘制图形 createShape(.square, on: view) } @IBAction func drawRectangle(_ sender: Any) { // 从工厂获取一个对象并使用它来绘制一个形状 let rectangle = getShape(.rectangle, on: view) rectangle.display() } }单例设计模式大部分 iOS 开发者熟悉单例模式...import Foundation class UserPreferences { enum Preferences { enum UserCredentials: String { case passwordVisibile case password case username } enum AppState: String { case appFirstRun case dateLastRun case currentVersion } } // end enum Preferences // 创建一个静态、常量实例并初始化 static let shared = UserPreferences() // 这是一个私有的,被?;さ墓蚕碜试?private let userPreferences: UserDefaults // 只有类本身能调用的一个私有初始化方法 private init() { // 获取 iOS 共享单例...Bool { let isVisible = userPreferences.bool(forKey: Preferences.UserCredentials.passwordVisibile.rawValue) if isVisible { return true } else { return false } }来到 ViewController.swift 文件,你将看到,访问并使用结构良好的单例是多么的容易:import UIKit class ViewController: UIViewController { @IBOutlet weak var passwordTextField: UITextField。
    10 天前
  • udemy.com 限免课程 Swift 5 Language, A Complete Overview[$199.99→0]

    udemy.com 限免课程 Swift 5 Language, A Complete Overview[$199.99→0]

    Swift 5 Language, A Complete Overview 是今天限免的 udemy.com 限免课程,教的是 Swift 编程语言,如果是想要学习在 iOS 和 macOS 上开发程序的话,那这门编程语言就一定要学习了...获取地址:https://www.udemy.com/swift-5-language-a-complete-overview/...couponCode=FREESWIFTCOURSEFULL。
    2018-09-09
  • 各位iOSer,一起来聊聊Swift的现在和未来吧

    各位iOSer,一起来聊聊Swift的现在和未来吧

    开始时间:2018-09-15 08:00 周六结束时间:2018-09-15 18:00 周六举办地点:北京市海淀区紫竹院路29号香格里拉大酒店关于大会match01 开发者 to 开发者@Swift 是一场由开发者做给开发者的技术盛宴,我们和你一样是开发者,你喜欢的你想要的也同样是我们所追求的...今年是我们第三次组织大会,依然邀请了国内外知名的技术专家,给大家分享高质量的技术内容...02 非盈利作为一个不免费、不盈利的大会,所有收入全部用于大会本身支出,包括会场租赁、嘉宾差旅、参会者福利等等。
    2018-09-07
  • 2018@Swift 一场面向 Swift 开发者的知识盛宴

    2018@Swift 一场面向 Swift 开发者的知识盛宴

    @Swift 开发者大会...具体来说,今年负责大会的是组里的五个成员:梁杰(@numbbbbb),小青(@DianQK),羊叔(@shanksyang),张思琦(@SketchK)和MM(@mmoaay)...今年是我们第三次组织大会,依然邀请了国内外知名的技术专家,给大家分享高质量的技术内容。
    2018-09-05
  • [图]Android端SwiftKey输入法APP更新:可实时翻译输入文本

    [图]Android端SwiftKey输入法APP更新:可实时翻译输入文本

    微软再次为Android端SwiftKey输入法APP带来重磅更新,引入的新功能可以实时将用户输入的文本转换为另一种语言...自7.1.3.25版本开始,Beta版SwiftKey APP中整合了Microsoft Translator功能,用户可以从工具栏上更方便地进行访问...用户在工具栏来激活翻译界面之后,文本翻译功能非常容易上手。
    2018-09-04
  • 怎样在Swift中使用正则表达式

    怎样在Swift中使用正则表达式

    1. 首先,定义你想检索的字符串:let?testString?=?"hat"之后创建NSRange实例来表示整个字符串的长度let?range?=?NSRange(location:?0,?length:?testString.utf16.count)这里使用utf16来避免类似表情符号等带来的问题2. 之后使用正则表达式语法创建NSRegularExpression实例let?regex?=?try...让NSRegularExpression用起来更简单接下里会展示更多的正则表达式语法,首先来看看如何让NSRegularExpression稍微好用一些现在我们的要3行Swift代码来匹配一个简单字符串let?range?=?NSRange(location:?0,?length:?testString.utf16.count)let?regex?=?try...如果你把 . 和 * 量词共同使用,就意味着匹配1个或多个除了换行符以外所有字符,这可能是你最常见的正则表达式了。
    2018-08-31
  • 全球最??!宏碁发布新一代Swift 7超极本:92%屏占比

    IT之家8月30日消息?在IFA 2018展会上,宏碁发布了新一代Swift 7超极本,再次拿下世界最薄笔记本电脑的称号...宏碁Swift 7采用了镁锂合金制造,保持轻薄的同时确保耐用性,不易弯曲...目前宏碁还未公布Swift 7的售价、具体配置以及上市时间,另外值得一提的是,同样在IFA亮相的Swift 5以990g夺得新的最轻15英寸笔记本称号。

相关链接

必威体育 www.langqinqh.com 为你发现的专属好站