swift 订阅
Swift,苹果于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别。 [1]  2015年12月4日,苹果公司宣布其Swift编程语言开放源代码。长600多页的The Swift Programming Language [2]  可以在线免费下载。 展开全文
Swift,苹果于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别。 [1]  2015年12月4日,苹果公司宣布其Swift编程语言开放源代码。长600多页的The Swift Programming Language [2]  可以在线免费下载。
信息
源    于
Objective-C
外文名
Swift
发布时间
2014年6月2日
发行组织
Apple
中文名
雨燕
参考语言
C,JavaScript,Python,Java
系    统
macOS,iOS,linux
SWIFT发展历史
2014-6-3 Swift于WWDC苹果开发者大会发布。 发布(6张) 2014-6-4 《Swift中文版》翻译组在github上进行协同翻译 [3]  。此项目开始不到一周就获得了1067个star。该项目的发起人是北航的大三学生 [4]  。2014-6-12《Swift中文版》第一版发布 [5]  。2015年12月4日,苹果公司宣布其Swift编程语言开放源代码 [3]  。长600多页的The Swift Programming Language [2]  可以在线免费下载。同时可以在苹果官方Github下载 [3]  。2020年最新一期的编程语言排行榜显示,Swift从第15名上升至第9名。 [6] 
收起全文
精华内容
下载资源
问答
  • Swift中文教程DOC版

    千次下载 热门讨论 2014-06-04 17:51:49
    Apple Swift编程语言入门教程 中文版本文档。主要通过实例讲解基础的语法
  • 本文介绍几点Swift 3.0相对于Swift 2.0的一些改变和使用方法 关于Swift 3.0的具体使用指南大家可以去阅读Swift 3.0中文文档(Swift 3.0 中文文档)和Swift 3.0官网文档(Swift 3.0 官网文档)

    关于Swift 3.0的具体使用指南大家可以去阅读Swift 3.0中文文档(Swift 3.0 中文文档)和Swift 3.0官网文档(Swift 3.0 官网文档

    1.首当其冲的就是闭包的修改。

    升级完Xcode8之后根据提示会默认帮你进行一些修改。但是修改完成还有500+多个错误很大一部分是闭包的修改,我的内心是这样的。

    在Swift2.3中我们写闭包是这样写:

        //Swift 2.2
        typealias detailCollectBlock = (state:Bool)->Void
    
        var detailCollect:detailCollectBlock?
    
        func detailCollect(detailCollect:detailCollectBlock)
        {
            self.detailCollect = detailCollect
        }
    
        //在需要的时候调用
        self.detailCollect?(state:true)
    
        //
        controller.detailPraise({ (state) in
            model.isPraise = (state ? "1" : "0")
                })
        //Swift3中的 使用方法1 
        typealias detailCollectBlock = (Bool)->Void
    
        var detailCollect:detailCollectBlock?
    
        func detailCollect(detailCollect:@escaping detailCollectBlock)
        {
            self.detailCollect = detailCollect
        }
        //在需要的时候调用
        self.detailCollect?(true)
    
        //在上页面回调接收的时候的用法
        controller.detailPraise(detailPraise: { (<#Bool#>) in
             model.isPraise = (state ? "1" : "0")
                })
    
        //使用方法2
        typealias detailCollectBlock = (_ state:Bool)->Void
    
        var detailCollect:detailCollectBlock?
    
        func detailCollect(_ detailCollect:@escaping detailCollectBlock)
        {
            self.detailCollect = detailCollect
        }
    
        //在需要的时候调用
        self.detailCollect?(state:true)
    
        //
        controller.detailPraise({ (state) in
            model.isPraise = (state ? "1" : "0")
                })

    这个时候大家应该就可以从代码中发现,swift3中需要定义闭包的时候不需要命名参数名,只需要告诉参数类型即可.

    现在迁移我们也可以使用方法2,这时我们的参数在使用时还是省略的(就和2.2时使用相同),外部调用闭包的时候就不需要在修改了。这样可以减少很多工作量,因为项目中的闭包实在是太多了..

    如果闭包不是在当前作用域内执行而是还要继续传递到别的函数里的话, 那就必须加上@escaping,本身的意思是逃逸的

    别接收回调的地方也和swift2.2不同,回调方法中会有block的名字,但是没有参数名了(方法2中就没有名字啦),只有参数的类型,我们需要自己来定义参数的名称.

    详情见SE-0103SE-0118

    2.在Swift2.3中我们函数在被调用时的第一个参数名会被省略,除非在前面在此定义eq:

    //这样才会在调用的时候显示参数名 swift2.2时
    func addCollect(detailId detailId)

    在Swift3中我们不需要在这样做了。会一直带有第一个参数名

    3.UIControlState等的表示状态的常量 都变成了首字母小写

    //Swift2.2
    self.toolsView?.praiseButton.setImage(UIImage.init(named: "tool_icon_like_normal"), forState: .Normal)
    
    self.phone?.componentsSeparatedByString() //swift2.2
    
    //swift3
    self.toolsView?.praiseButton.setImage(UIImage.init(named: "tool_icon_like_normal"), for: .normal)
    
    self.phone?.components(separatedBy: "-") //swift3

    这样做也是为了脱离OC冗长的方法命名,精简了语意,但是可读性还需要长时间的检验吧

    3.使用NSDictionary的修改

    dict.setObject(true, forKey: "state")
    dict.setObject(num, forKey: "key")

    在之前我们一直使用NSDictionary(<font color=gray>因为从OC转过来感觉还是NSarray和NSDictionary用起来顺手的</font> ),用来设置key的时候。现在需要添加NSCopying ,所以我都改成Dictionary啦哈哈。现在我们也应该在之后写代码的时候避免使用NSString,NSArray, NSDictionary等因为现在更加不方便了~~

    4.泛型

    //swift2.2
     var selectResult:PHFetchResult?
    
    //swift3
     var selectResult:PHFetchResult<PHAsset>?

    这个是项目中图片管理器所用到的,现在就是需要在PHFetchResult后面告诉它是什么类型,也可以是AnyObject
    这个后面还需要详细的介绍。给自己挖个坑

    5.没有了CGRectMake 改用CGRect.init来初始化或者我们写一个他的扩展.来模拟之前的CGRectmake

    //用来代替,修改的CGRectMake
    func CGRectMake(_ x:CGFloat,_ y:CGFloat,_ width:CGFloat,_ height:CGFloat)->CGRect
    {
        return CGRect.init(x: x, y: y, width: width, height: height)
    }

    6.关于颜色的初始化方法UIColor.color都去掉了括号,并且color的后缀页去掉了,新添加了Url类,也是为了脱离OC的NSUrl吧.

    7.GCD的改变 更加Swift化.

    DispatchQueue.main.async {
        let controller = LoginViewController()
        self.present(controller, animated: true, completion: nil)
                    }

    其实GCD的用法没有太多的改变,只是写法变的更加Swift,去掉了之前C语言的形式,多写读多熟悉应该就好了。

    9.NSString操作的变化

    //swift2.2
       let ch = (pinYinString as NSString).character(at: 0)
    //swift3
        let ch=pinYinString?.unicodeScalars[(pinYinString?.unicodeScalars.startIndex)!]

    因为我需要取到拼音的首字母来进行排序,所以需要获取到首字母的ASCII码。所以使用NSString更方便。但是现在不能这样用了,所以我们只能使用Swift中的这个unicodeScalars来获取啦。

    8.枚举变成了小写,自己定义的时候是大写当他变成.语法的时候Xcode页把它变成了小写

    展开全文
  • swift 3迁移到swift5 swift版本迁移指南

    千次阅读 2019-09-30 14:36:32
    Swift 5已经发布下面是官方swift5的介绍。 IntroducingSwift 5.1 Swift 5.1now makes it easier to create and share binary frameworks with others. It also includes features that make it easier to design ...

    Swift 5已经发布下面是官方swift5的介绍。

    Introducing Swift 5.1

    Swift 5.1 now makes it easier to create and share binary frameworks with others. It also includes features that make it easier to design better APIs and reduce the amount of common boilerplate code.

    Key Features

    • Module stability defines a new text-based module interface file that describes the API of a binary framework.
    • Property wrappers introduce a general purpose syntax for defining custom access patterns for property values.
    • Opaque result types help hide implementation details in APIs.
    • 'Self' can now be used for classes and value types.
    • Support for handling and updating diffs on collections of appropriate types.
    • Improvements to SIMD and String types.

    此版本终于迎来了 ABI 稳定,因此 Swift 运行时现在可以引入到 Apple 平台各类操作系统的不同版本中,包括 macOS、iOS、tvOS 与 watchOS。Swift 5 还引入了构建块的新功能,包括重新实现 String、在运行时对执行内存的独占访问与新数据类型,以及对动态可调用类型的支持。

    Swift 5 兼容 Swift 4、Swift 4.1 和 Swift 4.2,Xcode 10.2 中包含了一个代码迁移器,可以自动处理许多迁移需要用到的源码更改。

    语言更新

    稳定的 ABI 与二进制兼容性

    ABI 已经稳定,因此 Swift 库现在可以整合到每个 macOS、iOS、tvOS 和 watchOS 版本中,应用将更容易构建,并且体积更小,因为它们不必包含这些库。

    标准库更新

    Swift 5 中的标准库包括以下新特性:

    • 使用 UTF-8 编码重新实现的 String 可以产生更快的代码,之前我们已经报导过:Swift 5 将使用 UTF-8 作为首选字符串编码
    • 改进了对字符串中原生文本的支持
    • 标准库添加 Result 和 SIMD 矢量类型
    • 增强了字符串插值功能,为从数据构造文本提供了更多灵活性
    • 改进了 Dictionary 和 Set 的性能

     

    目前应该有不少的项目还是处于OC Swift混编的状态, 那么如何将这部分老的OC代码迁移至Swift版本?

    1:重写(量大的话不太现实), 比较耗费精力和时间
    2:使用工具(本片文章主要推荐的)   

    备份好代码,对于 Xcode 我有一个经验再次和大家分享一下:Xcode 有两个版本,一个不稳定的版本和一个更不稳定的版本。

    Swiftify

    xcode可直接下载安装, <Swiftify for Xcode>下载安装后需要简单的配置方可使用:

    1. -系统偏好设置>"扩展"中为Xcode Source Editor(Xcode源码编辑器)选择"Swiftyfy for Xcode"
    2. 打开Xcode > Editor > 菜单下看到新的"Swiftify"子菜单

    这里有三个选项:

    • 1: Convert Selection to Swift(将选中的代码块转化成Swift)
    • 2:Convert File to Swift(将文件转化成swift语言)
    • 3:Paste as Swift (以Swift方式粘贴代码)

    不同注册用户代码转化有大小限制:

    • 未注册用户: 1KB/每次 大概也就100代码不到吧
    • 注册未付费用户: 2KB/每次

    选中代码转化成Swift快捷键配置

    自动转化配置项介绍

    功能丰富, 分别针对工程文件,静态库文件,部分OC代码转化后OC Swift混编的处理, PCH的处理,Xib/Storyboard处理,被转化后的swift文件被其他OC文件引用的处理,'\n'字符串的出里,以及是否需要将使用的静态库转化成动态库的处理等

    文档列表都在这里

    https://support.swiftify.com/hc/en-us/articles/360028372231-Update-Xcode-project-files

    链接:

    自动转化配置项

    网页端转化链接:
    https://objectivec2swift.com/#/converter/code/

    相对于  swift3迁移swift4    swift3迁移swift5还是比较简单。

    展开全文
  • SwiftUI综合了Flutter、Kotlin等新生利器的特性,它诞生了。 不用不知道,一用吓一跳,以往的UITableView加上删除功能、定义Cell、定义模型等,需要多个文件,一堆代码。 然而SwiftUI打破传统,类似这种列表,只...

    SwiftUI综合了Flutter、Kotlin等新生利器的特性,它诞生了。

    不用不知道,一用吓一跳,以往的UITableView加上删除功能、定义Cell、定义模型等,需要多个文件,一堆代码。

    然而SwiftUI打破传统,类似这种列表,只需要4、5十行代码就可以解决,而且我还算上文件头部的8行备注啊。

    这里只记录一个用法,怎么桥接Swift项目与SwiftUI界面。

    用方法UIHostingController(rootView: )把SwiftUI中的ContentView包装成控制器,得到的控制器就把它当成正常的UIViewController使用即可,可以present,可以push。

    就是这样:

    let controller = UIHostingController(rootView: contentView)

    展开全文
  • swift 3, swift2

    2016-12-21 12:18:58
    Swift3:DispatchQueue.main.async(execute: { }) Swift2: dispatch_async(dispatch_get_main_queue(), { }) TimeInterval–swift3 NSTimeInterval–swift2fileprivate-swift3 private-swift2D

    Swift3:

    DispatchQueue.main.async(execute: {

                })
    

    Swift2:
    dispatch_async(dispatch_get_main_queue(), {

                })
    

    TimeInterval–swift3
    NSTimeInterval–swift2

    fileprivate-swift3
    private-swift2

    Data-swift3
    NSData-swift2

    URL-swift3
    NSURL-swift2

    UserDefaults-swift3
    NSUserDefaults-swift2

    URLSessionDataTask-swift3
    NSURLSessionDataTask-swift2

    HTTPURLResponse-swift3
    NSHTTPURLResponse-swift2

    JSONSerialization-swift3
    NSJSONSerialization-swift2

    ComparisonResult-swift3
    NSComparisonResult-swift2

    ViewController.present-swift3
    ViewController.presentViewController-swift2

    [UIApplicationLaunchOptionsKey: Any]-swift3
    [NSObject : AnyObject]-swift2

    UIScreen.main.bounds-swift3
    UIScreen.mainScreen().bounds-swift2

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)–swift3
    override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer)—swift2

    func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings)-swift3
    func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) -swift2

    [AnyHashable: Any]-swift3
    [NSObject : AnyObject]-swift2

    func getUserInfo(withUserId userId: String!, completion: ((RCUserInfo?) -> Void)!) -swift3
    func getUserInfoWithUserId(userId: String!, completion: ((RCUserInfo!) -> Void)!)-swift2

    UIApplication.shared.delegate -swift3
    UIApplication.sharedApplication().delegate-swift2

    NSArray? .object(at: 1)-swift3
    NSArray .objectAtIndex(1)-swift2

    Any -swift3
    AnyObject-swift2

    FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]-swift3
    NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]-swift2

    UITableViewCellAccessoryType.none-swift3
    UITableViewCellAccessoryType.None-swift2

    func numberOfSections(in tableView: UITableView) -> Int –swift3
    func numberOfSectionsInTableView(tableView: UITableView) -> Int —swift2

    DateFormatter-swift3
    NSDateFormatter-swift2

    UIBarButtonItemStyle.plain –swift3
    UIBarButtonItemStyle.Plain -swift2

    IndexPath-swift3
    NSIndexPath -swift2

    tableView.dequeueReusableCell(withIdentifier: cellIdentifier)-swift3
    tableView.dequeueReusableCellWithIdentifier(cellIdentifier)–swift2

    tableView.numberOfRows(inSection: 0) -swift3
    tableView.numberOfRowsInSection(0)-swift2

    override var canBecomeFirstResponder : Bool {
    return true
    }-swift3
    override func canBecomeFirstResponder() -> Bool {
    return true
    }–swift2

    var hasText : Bool {
    return nextTag > 1 ? true : false
    }-swift3
    func hasText() -> Bool {
    return nextTag > 1 ? true : false
    }-swift2

    guard let value = element.value as? Int8, value != 0 else { return identifier }–swift3
    guard let value = element.value as? Int8 where value != 0 else { return identifier }-swift2

    func functionName(_ user: String)–swift3
    func functionName(user: String)–swift2

    tableView.register( –swift3
    tableView.registerClass( –swift2

    one function of string
    replacingOccurrences–swift3
    stringByReplacingOccurrencesOfString -swift2

    展开全文
  • Swift入门》关于Swift

    千次阅读 2016-04-05 19:44:41
    Swift 结合了 C 和 Objective-C 的优点并且不受C兼容性的限制。Swift 使用安全的编程模式并添加了很多新特性,这将使编程更简单,扩展性更强,也更有趣。Swift 是使用基于安全、性能和软件设计模式的现代方法生成的...
  • swift ~ 2020年 swift面试题

    千次阅读 2020-05-27 19:04:50
    Swift是苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于MAC OS和iOS平台,用于搭建基于苹果平台的应用程序。 2、举例说明Swift里面有哪些是 Objective-C中没有的? Swift...
  • Swift_3.0 相对于 Swift_2.2 版本发生了哪些的变化。本文件将以最直观的代码对比以及文字分析阐述。
  • Swift整形

    千次阅读 2016-09-06 20:21:00
    Swift整形
  • Swift - Swift生成随机数

    千次阅读 2015-05-10 20:38:59
    Swift生成随机数
  • Swift2.3适配Swift3.0

    千次阅读 2016-09-30 16:40:43
    升级Xcode8.0Beta版,看着公司Swift版本的项目200多个报红,那种酸爽也就苹果能给。慢慢改吧!改的东西很多,但基本都不难,记录几个花费较长时间的Bug。 NO.1【报错】“Use Legacy Swift Language Version” (SWIFT...
  • Swift学习笔记 - Swift属性只读

    千次阅读 2016-10-30 19:51:47
    在OC中我们经常用到只读属性,用readonly修饰一下就行了,但在Swift中已经不是这样修饰的了,下面记录一下Swift中只读属性的使用 在OC中的只读://只读属性 @property(readonly, nonatomic) NSObject *wcl;在Swift中...
  • Swift 3 and Swift 2.3 change

    2016-10-06 22:22:00
    One case:when swift 3 to swift 2.3, just remove “_” before parameter, correspondingly when swift 2.3 to swift 3, just add “_” before parameter, Example: Swift3: typealias ...
  • swift基础视频教程

    千人学习 2015-12-30 16:14:11
    Swift,苹果于2014年苹果开发者大会发布的新开发语言,可与Objective-C共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。 Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力...
  • Swift项目

    2017-04-01 11:22:33
    初步准备写一个Swift项目,尽量完整。包括Swift项目的一般框架、Swift的常用语法以及Swift控件的使用等。 代码下载请戳这里 目前代码还在不断更新中!
  • SwiftUI入门到实战课程

    千人学习 2019-12-10 16:14:27
    SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。 SwiftUI具有易于阅读和自然编写的...
  • Swift简介

    千次阅读 2018-05-23 20:51:35
    Swift可以解决什么问题1.数据持久性:用户数据存储到系统中丢失的可能性。为了防止数据丢失,Swift采用了冗余Replica(副本)的处理方法。Replica的默认值是3.2.对称性是指Swift架构设计上,每个服务器的功能和作用...
  • oc与swift混编,OC调用swiftswift调用OC
  • 老镇讲堂-Swift动画编程指南

    万人学习 2015-05-25 11:39:45
    掌握Swift动画编程
  • Swift Bool

    千次阅读 2016-09-20 14:49:57
    Swift有一个基本布尔类型,叫做(Bool)Swift有两个布尔常量:true 和false swift的Bool和OC的BOOL有写不一样 swift 必须给bool赋值才能进行判断 如: var appleAndpear:Bool if appleAndpear {   print...
  • 使用Toolchains 在 Xcode 中切换Swift 版本 安装Xcode11.4后,新 Xcode只包含最新版本的 Swift5.2。但通常我们的代码或第三方库还来不及匹配,或者我们想看看新的特性在新旧版本之间的区别,这时候就比较蓝瘦。 苹果...
  • 不知道大家有没有发现,在一个 Objective-C 和 Swift 混编的 App 中,当把一个 OC 中的参数转到 Swift 时,Swift 会自动把这个变量进行强制解包。举个例子,我在 OC 中定义这样一个变量:@property (nonatomic, copy...
  • Swift Swift和OC混编

    千次阅读 2016-05-02 16:31:03
    接触Swift有一段时间了,但是一直没有试过混合编程。难得的五一小长假,就有空简单的谢谢Swift和OC的混合编程的Demo。1.新建一个空的Swift项目 注意语言选择Swift。2.新建一个OC的控制器 注意语言选择OC。3.这一步...
  • 该文章翻译自apple官方文档:The Swift Programming Language(Swift 4.1) A Swift Tour -- 一个Swift 旅行 Tradition suggests that the first program in a new language should print the words “Hello, world!...
  • swift集合

    千次阅读 2017-03-07 17:31:54
    swift的集合与数组比较相近,最大的区别在于集合无序,并且所含有的元素不能重复1、集合的定义//集合定义 var skillsOfA:Set<String> = ["swift","OC"] //集合是无序的,会自动删除重复的元素值 var skillsOfB:Set...
  • Swift 势必取代 Python?

    万次阅读 多人点赞 2019-05-30 10:55:54
    @开发者,如果你正在研究深度学习,那么建议你开始学习Swift语言。 作者 |Max Pechyonkin 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 当程序员听到Swift时,可能都会联想到iOS或MacOS...
  • 每当看到新的编程语言我总是会有相当大的兴趣,是的,Swift 3是一门『新语言』,因为它看起来,怎么都不像过往的 Swift。打开一个老的项目时,发现满目疮痍,基本上能标红的代码全被标红了。先来个截图提提神: 图...
  • Swift中文版和英文版教程合集

    千次下载 热门讨论 2014-06-05 10:02:47
    有人称Swift是最优秀的语言。这是因为很多脚本语言都本身都存在着难以处理的短板,比如Objective-C的优势在于测试设备的性能,用以开发更精细的应用,但是相对而言编程时遇到的问题也更复杂;又如Python,虽说编程很...
  • 我们首先通过下面这个例子回顾一下已经学习过的 SwiftUI 中的 Swift 5.1 新特性:some SwiftUI 和 Swift 5.1 新特性(1) 不透明返回类型 Opaque Result Type,以及@State 和 @Binding背后的 @propertyDelegate Swift...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,574
精华内容 45,829
关键字:

swift