• 之前的代码Swift版本是3.2(假设),而最新的Widget则使用4.0为什么不把3.2的代码升级到4.0呢?这是可以的,但是涉及到要改很多地方:而且3.2和4.0也不是完全不兼容,只是在某些地方新旧版本会有冲突,没必要为了这

    你会问同一个Xcode项目中还会用不同版本的Swift?

    对!举个栗子:2年前你写了一个管理密码的App,最近你觉得有必要再写一个Today Widget插件用来便捷显示密码。

    之前的代码Swift版本是3.2(假设),而最新的Widget则使用4.0

    为什么不把3.2的代码升级到4.0呢?这是可以的,但是涉及到要改很多地方:

    升级带来许多问题


    而且3.2和4.0也不是完全不兼容,只是在某些地方新旧版本会有冲突,没必要为了这一点兼容性而老项目全部升级版本。

    比如说对于NSMutableAttributedString的操作,4.0之后对于属性名称的引用方式和之前有不同,无法写出3.2和4.0都能编译通过的代码。

    对于3.2和4.0都会引用到的代码片段,我们必须因”版”而异,用Swift的编译宏命令做代码隔离:

    #if swift(>=4.0)
                attrString.addAttribute(.foregroundColor, value: UIColor.red, range: range)
                attrString.addAttribute(.backgroundColor, value: UIColor.green, range: range)
                attrString.addAttributes([.shadow:keywordShadow,.verticalGlyphForm:0], range: range)
            #else
                attrString.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: range)
                attrString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.green, range: range)
            attrString.addAttributes([NSShadowAttributeName:keywordShadow,NSVerticalGlyphFormAttributeName:0], range: range)
            #endif

    以上代码在项目的公共组里的String+ext.swift文件中,该文件会同时被App和Widget项目包含使用。

    使用如上所示的代码隔离,或称为选择编译使得全部项目顺利编译通过。

    展开全文
  • 打开终端,使用命令xcrun swift -versionxcodebuild -showsdks如图所示: 转载于:https://juejin.im/post/5cde5a62f265da1bc55230e5

    打开终端,使用命令

    xcrun swift -version

    xcodebuild -showsdks 

    如图所示:




    转载于:https://juejin.im/post/5cde5a62f265da1bc55230e5

    展开全文
  • 更新Xcode8之后之前用Swift2.3写的程序运行不起来。 原因:Xcode 8 兼容Swift 2.3 和 3.0 两种版本,默认为3.0 解决方法:Target - Build Settings 选择Yes即可。

    更新Xcode8之后之前用Swift2.3写的程序运行不起来。

    原因:Xcode 8 兼容Swift 2.3 和 3.0 两种版本,默认为3.0

    解决方法:Target -  Build Settings

    选择Yes即可。

    展开全文
  • 最近升级到Xcode11.1,项目是swift5.0,真机第一次编译的时候,代码里修改的UI真机上并没有显示,第二次在编译运行才会显示。很奇怪,反正我只要在Xcode上写新的代码,第一次编译运行就是没效果,什么改动在运行一次...
  • Xcode 8的到来,Swift版本由2.3省级到3.0语法有较大变动。 首先无论新旧项目在Xcode8.x下运行后必须设置Swift Version去适配swift语言的语法问题: 执行操作 [Edit > Convert > To Current Swift Syntax…] ...

    Xcode 8的到来,Swift版本由2.3省级到3.0语法有较大变动。

    首先无论新旧项目在Xcode8.x下运行后必须设置Swift Version去适配swift语言的语法问题:

    执行操作 [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly

    但结果还是错误一大堆:下面是我遇到这些问题的过程 和 解决过程

    错误1:Swift语法问题:因为Xcode8.0有了Swift3.0版本语法改动较大,之前都是swift2.3版本的。需要点击Edit->Convert->To Current Swift Syntax...修复,选择swift版本,我选择的是swift2.3 and later。 但我这项目之前是OC和swift混编,按此修复了所有swift文件,还是一堆的语法错误。如图:


    这是点击Edit->Convert->To Current Swift Syntax...出现的对比图。左边是修改后的代码,右边是修改前的。

    进行此操作后出现语言错误,一大堆,这Xcode自动修改的没问题吗?

    显然Xcode让我们改成左边语法是不对的,但Xcode还让我们改?!日了狗了,后来在按照上述操作进行时先别点击sava(其实你编译一下就会报错了,有这种for循环修改的错,我回退了这些for循环的修改(直接点击中间灰色部分选择discard),所有这种discard后,其他照常修复,然后再点击save,结果就解决了Swift版本的问题。

    后来使用Xcode8 正式版操作完后出现了一个新的错误:就是代码let a = xxx.xxx() 报错,主要是xxx()方法返回UIView,所以改成let a:UIView = xxx.xxx()解决了该错误。

    错误2:使用CocoaPods 导入有swift语言的框架后的错误解决,首先无论怎么样你运行或者编译他都会有如图所示的错误提示


    第一对于已经适配了swift3.0的按理来说不会出现该错误了,但那时我导入已经适配swift的ReactiveCocoa还是出现了该错误。执行了Edit->Convert->To Current Swift Syntax...去修复,还是不能解决问题,

    解决方法是:直接进行如下图选择Yes后编译运行问题解决



    展开全文
  • 1、打开xocde,创建一个工程,如下图所示:2、选择macOs中的Command Line Tool项目,然后点击next,如...5、创建之后已经存在一个main.swift文件,如下图所示:6、点击右三角运行,如下图所示:7、运行成功之后就会...

    1、打开xocde,创建一个工程,如下图所示:


    2、选择macOs中的Command Line Tool项目,然后点击next,如下图所示:


    3、输入Product Name的名称,Organization Identifier的名称,点击Next,如下图所示:


    4、然后选择保存工程的路径。

    5、创建之后已经存在一个main.swift文件,如下图所示:


    6、点击右三角运行,如下图所示:


    7、运行成功之后就会在下边输出Hello,world!,如下图所示:


    展开全文
  • Xcode 9 引入了 New Build System,可在 Xcode 9 的 File -> Project Settings... 中选择开启。 预编译 Bridging Headers 文件 对于 Swift 和 Objective-C 混合的项目,Swift 调用 Objective-C 时,需要建立一...
  • 在这里,我们手把手教你学习Xcode7和Swift2语言!重点是一看就懂,一学就会! 本篇视频教程拥有115节课程,包含数据处理、常用插件、信用卡卡号识别、自动化测试、网络访问、多线程、ShareSDK社会化分享、Core...
  • 很多同学可能也不是很关心苹果公司的各种发布会,或者是对科技界不是很感兴趣,导致在学习/使用xcode开发swift时不是很确定自己的swift到底是哪个版本,现将本人在网上查找和自己探索到的几种查看swift版本的方法列...
  • 我们使用XCode 11.3创建一个基于Swift的的Hello World应用示例。
  • 1.删除Main.storyboard,SceneDelegate.swift和ViewController.swift文件。 2.在Info.plist文件中删除Main storyboard file base name属性和Application Scene Manifest属性。 3.创建简单首页:HomeViewController....
  • 随着Xcode9 Swift4 的到来,一些小问题也接踵而至。许多优秀的Swift第三方框架还未来得及迎接Swift4的到来,它们还停留在swift3.x的状态,这个时候新建一个项目,...其本质都是控制编译时所使用的Swift版本第一种:Xco
  • 转发链接:... The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. This...
  • 本文讲的是在 Xcode 项目中使用 swift package fetch, 到目前为止,Cocoa with Love 的 git 仓库都使用“git subtrees”来管理相关依赖,所有的依赖都被拷贝并静态存放于依赖方目录下。我希望能找到一种更动态地...
  • 前言 hihi,勇敢的小伙伴儿们大家好,我们有一个项目许久未更新了,所以代码有很长一段时间没有运行过,这两天想参考原项目的功能...因为项目是混编的原因,Swift的使用直接导致了这次错误的出现。 问题出现及解决...
  • Swift版本变化

    2016-05-27 11:04:52
    编译期 Swift版本检查Swift 2.2允许更多的关键字来做参数标签 [官网]–尽量还是不要用,很容易出问题 开放了除 inout, var 和 let 以外所有的关键字,现在他们都可以作为参数 label 来使用了(而不用加单引号),...
  • 1.创建xcodeProject 2.选择single View App,下一步 3.选择SwiftUi,下一步,选择某个位置保存你的项目 4.选中ContentView.swift 内容展示 import SwiftUI struct ContentView: View { var body: some ...
  • 1.Json解析器:SwiftyJson
  • 万众期待的 Swift 5 终于来了,苹果爸爸答应的 ABI 稳定也终于来了。 小集新小伙伴 @NotFound-- 花时间将文档翻译出来,供大家参考。翻译不当之处,请及时留言指出,我们会持续更新。 App 瘦身 新特性 Swift 应用...
1 2 3 4 5 ... 20
收藏数 8,640
精华内容 3,456
关键字:

xcode 修改swift版本