swift升级swift3.0到3.0之后,还有办法退回到2.3吗

你们还在用 Swift 开发么。。。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
Sponsored by
国内领先的实时后端云野狗 API 可用于开发即时聊天、网络游戏、实时定位等实时场景传输快!响应快!入门快!
Promoted by
你们还在用 Swift 开发么。。。
· 11 天前 · 970 次点击
之前在写 Star Order 的 Mac 客户端,在 iOS 端已经用 Objective-C 写好的情况下,我作死的使用了 Swift 来写 Mac 客户端,费尽洪荒之力各种迁移代码,各种学习 Mac 开发之后最近终于接近写完了。
然鹅,就在前两天我开始做测试并沾沾自喜 Swift 终于入门了的时候:
macOS 和 Xcode8 的 GM 版发布了==&我兴高采烈的更新了==&项目满目疮痍了==&我崩溃了
主要问题集中在:
大量的 API 更新, Xcode8 提供的迁移功能并不足以智能到无痛迁移。
大量(早期)第三方库不支持 Swift ,看作者也没有更新的打算, issue 石沉大海。
深入思考之后,我越来越觉得以后每年 9 月节奏都会变成:
《 Swift 从入门到精通再到入门》, 《老 Swift 项目是怎么垮掉的》以及《 Xcode 为什么这样红》。
为了长治久安,我又在考虑从 Swift 迁移回 Objective-C ,并重构代码了。。。
我还在纠结是直接先 Swift 上一版,然后去慢慢迁移重构,还是再花一个多月迁移回 Objective-C 之后再发。。。
18 回复 &| &直到
18:25:10 +08:00
& &11 天前 via iPhone
现在能把 Swift2 迁移到 Swift3 的,在 Swift 上的造诣一定很高。
& &11 天前
现在项目就是用 swift 写的,马上下个 xcode8 看看如何。
& &11 天前
。。还好之前项目没决定用 swift
& &11 天前
拿出点 Courage 来!
& &11 天前
想问一下二楼还活着吗。。
& &11 天前
本来用 swift1 写了个 ios 客户端,升级 2 以后很多要重写,好崩溃
现在又听闻 swift 要升级 3 了,又不兼容 swift2 !你们先玩!
& &11 天前
自己写的其实还好,关键是第三方库,悲剧。
& &11 天前
从 swift 1 到 swift 2 觉得还行啊。也没很多问题啊。 iOS 啊。 mac 的第三方不知道什么情况, iOS 的 bridge 过去,还是很方便的啊。
& &11 天前
@ 壮士,干了这碗热翔!
& &11 天前
我司的项目刚从 2 =& 2.3 ,工作量还算可以接受
& &11 天前
你们玩,我到站了
& &11 天前 via iPhone
从精通到放弃大概就是这样
& &11 天前
@ 主要是 swfit3 2.3 不久就会抛弃了
swift3 语法改变较多 较真的话 函数名都要重命名一遍
& &11 天前
@ 迟早还是要迁移的。。。
& &11 天前
其实只要不去作死升级什么 GM 版的话, 还是可以愉快的玩耍的, 用 swift 快一年半了, 没多么的要死要活
& &11 天前
好吧.
等 Xcode8 正式发布了.就迁. =????(???*)
& &11 天前 via iPhone
swift1 和 2 写了一些 demo 和自用的 ios/osx 应用,都不是生产环境,公司代码就准备从 3 开始了。先写就先熟悉理解,也挺有作用的。
& &11 天前
@ 自己代码还好 关键是用到的第三方库有些根本没做 swift3.0 的版本...
& · & 409 人在线 & 最高记录 2067 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.5 · 49ms · UTC 23:15 · PVG 07:15 · LAX 16:15 · JFK 19:15? Do have faith in what you're doing.主题 : swift升级到3.0之后,还有办法退回到2.3吗?现在问题太多了,解决不掉了
级别: 新手上路
UID: 570274
可可豆: 184 CB
威望: 171 点
在线时间: 92(时)
发自: Web Page
swift升级到3.0之后,还有办法退回到2.3吗?现在问题太多了,解决不掉了&&&
swift升级到3.0之后,还有办法退回到2.3吗?现在问题太多了,解决不掉了有什么办法能退回到2.3吗?现在出的问题有点多,都解决不过来了,好忧伤
额,我的问题最多
级别: 新手上路
可可豆: 67 CB
威望: 57 点
在线时间: 171(时)
发自: Web Page
你直接用Swift 2.3即可~
级别: 新手上路
UID: 570274
可可豆: 184 CB
威望: 171 点
在线时间: 92(时)
发自: Web Page
回 1楼(u_r_sb) 的帖子
怎么用的呀,我刚才不小心点到变成3.0了,现在想退回去,不知道怎么退了
额,我的问题最多
级别: 新手上路
可可豆: 67 CB
威望: 57 点
在线时间: 171(时)
发自: Web Page
回 2楼(qq8311065) 的帖子
&&&&&& 最简单的方法就是重新再建一个呗~
级别: 侠客
可可豆: 198 CB
威望: 198 点
在线时间: 288(时)
发自: Web Page
如果有用 Time machine ,就恢复回去。如果有用版本控制,也可以恢复。实在不行,就逐一解决问题,坚持用swift 3.0我的一个程序升级后,刚开始也是错误多多,最后问题一一搞定,只是费了不少时间。
级别: 新手上路
UID: 570274
可可豆: 184 CB
威望: 171 点
在线时间: 92(时)
发自: Web Page
回 4楼(iwuyou) 的帖子
我先走也是逐个解决问题的,我的SwiftJSON不能用了,在网上更新了3.0的,可是还是一直报错,请问你有遇到过这种情况吗
额,我的问题最多
级别: 新手上路
可可豆: 27 CB
威望: 17 点
在线时间: 48(时)
发自: Web Page
请问你也是出线图中的问题吗?&& Module compiled with Swift 2.3 cannot be imported in Swift 3.0:解决了吗? 正在寻找解决方法。
图片:屏幕快照
16.19.04.png
级别: 新手上路
UID: 326658
可可豆: 251 CB
威望: 147 点
在线时间: 90(时)
发自: Web Page
坚持一下吧,刚刚开始错误会很多的,但是没办法。SwiftyJSON 有支持 3,0 的版本了,直接替换就好。
级别: 新手上路
UID: 342815
可可豆: 49 CB
威望: 39 点
在线时间: 230(时)
发自: Web Page
论备份的重要性
关注本帖(如果有新回复会站内信通知您)
论坛技术问题应该发布到? 正确答案:CocoaChina问答
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版平板/笔记本
3.0退回2.3其实很简单啊 官方教程写得复杂了
&已臻大成&
来自:浏览器
本帖最后由 五两荣耀 于
09:54 编辑
怎么这么多问怎么退回的
都没看教程么&&&&(里面有中转包)
写得有些复杂
其实3.0退回2.3
608→118/119307→120
简单说呢分两步
请提前备份好数据
恢复出厂最好连内部存储也清空
恢复一次出厂刷完bug少
1、恢复一次出厂 然后卡刷中转包
转包里的东西解压出来
然后放到sd卡的dload文件夹里(自己新建一个dload)
按照卡刷的步骤刷中转包
中转包就在上面的教程里
2、卡刷2.3的完整包
这个就很简单了吧
刷完之后恢复一次出厂
&&&(找到对应机型,选择稳定版,在历史版本里有B120sp03的完整包)
回到2.3你会发现世界一片美好~
width:100%">
&登堂入室&
来自:浏览器
请给个中转包下载地址
http://cn./thread--1.html&
width:100%">
&略有小成&
来自:浏览器
恢复出厂,数据不都没有了
width:100%">
&炉火纯青&
来自:荣耀6 H60-L01
这么简单,支持。
width:100%">
&已臻大成&
来自:浏览器
恢复出厂,数据不都没有了
本来卡刷也会丢数据,恢复一次出厂刷完bug少
width:100%">
&已臻大成&
来自:浏览器
请给个中转包下载地址
官方教程里带着中转包
width:100%">
&独步江湖&
来自:浏览器
我使用官方教程里中转包降级无效,最后倒是直接用118完整包三键强刷成功了!
width:100%">
&已臻大成&
来自:浏览器
我使用官方教程里中转包降级无效,最后倒是直接用118完整包三键强刷成功了! ...
中转包刷完我记得还是3.0 然后再118
width:100%">
&独步江湖&
来自:浏览器
中转包刷完我记得还是3.0 然后再118
是啊,中转包刷完一看,还是3.0,直接强刷B118了
width:100%">
&已臻大成&
来自:浏览器
是啊,中转包刷完一看,还是3.0,直接强刷B118了
嗯 不知道中转包什么用 不过反正照着来一遍也心安了
width:100%">
随手拍达人
在“花粉随手拍”中发布优质随手拍即有机会获取勋章。
【传统味道】【唯美彩虹】【遂昌南尖岩】【秋雨无情】【渔光之曲】【星空灿烂】
花粉客户端
Make it Possible
Make your device special
华为云服务
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
没有最新动态
关注花粉俱乐部
联系我们:
|关注花粉俱乐部:
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利Swift 3.0 去掉 C 风格循环后怎么办? - 推酷
Swift 3.0 去掉 C 风格循环后怎么办?
Swift 3.0 版本将会去掉沿用已经的 C 风格循环语法, 又是向现代开发语言的一次迈进, 咱们就来看看没了 C 风格循环我们还有什么选择, 看过之后你会不会感觉 C 风格循环在 Swift 中确实有点多余呢?
C 风格循环
关于 C 风格循环, 不我们过多介绍了, 就是类似这样的语句:
let numberList = [1, 2, 3, 4, 5]for var i = 0; i & numberList.count; i++ {
如今这样的语法在新版本的 Swift 中即将成为历史了, C 风格的循环语法可能是大家最熟悉的, 大家会不会觉得突然去掉这个语法有些不适应呢? 咱们再来看看 Swift 3 中的替代方案。
for .. in 语法
第一个替代方案, 我们可以使用 for .. in 这样的语法:
let numberList = [1, 2, 3, 4, 5]var result = &&for num in numberList {
result += &\(num) &
这样就完成了对数组的遍历了, 但是还有另一个情况, 如果我们想知道每次遍历的索引怎么办呢, 还有一种方法:
for num in numberList.enumerate() {
result += &[\(num.index)]\(num.element) &
我们可以使用这个集合类型的
方法,将这个数组的索引和对应的元素都取了出来,然后我们在循环中就可以对索引项进行引用了, num.index 和 num.element 分别代表对应的索引和元素。
上面这个循环我们还可以再改写一下:
for (index, item) in numberList.enumerate() {
result += &[\(index)]\(item) &
不难看出,其实循环中的每一项都是一个元组(Tuple),这个元组的第一项是当前的索引, 第二项是当前的数组元素。 那么我们就可以推理出,
函数其实就是对
numberList
数组做了一个变换,原来它是一个 Int 类型的数组,经过变换后,成为了 (Int, Int) 元组类型的数组。
是不是这么回事呢? 查看 enumerate 方法的文档后, 看到它的定义是这样的:
func enumerate() -& EnumerateSequence&Array&Element&&
比我们想象的要复杂些, EnumerateSequence 是个什么鬼, 让我们再来看看它的文档定义:
The SequenceType returned by enumerate(). EnumerateSequence is a sequence of pairs (n, x), where ns are consecutive Ints starting at zero, and xs are the elements of a Base SequenceType
仔细看下, 其实跟我们理解的还是差不多的, 它只不过是对集合类的一个集成, 这个集合每一项是一个元组 (n, x) , n 代表索引, x 代表数组元素。
那么,我们还可以做点更有意思的事情:
for (index, item) in numberList.enumerate().reverse() {
result += &[\(index)]\(item) &
调用 enumerate, 之后再调用 reverse 方法, 我们就可以对一个数组进行反向遍历。
for (index, item) in numberList.enumerate().reverse() {
result += &[\(index)]\(item) &
我们还可以:
for (index, item) in numberList.enumerate().filter({ (index, item) in index % 2 == 0}) {
result += &[\(index)]\(item) &
调用 filter 函数,过滤某些索引, 只遍历符合条件的那些元素。
当然, 我们还可以做的更多更多, 大家有兴趣可以看看
SequenceType
的文档,把你的新思路回复给大家。
区间(Range)循环
除了刚才咱们说的这些, Swift 还提供了更方便的循环语法, 叫做 Range 循环。 比如这样:
var rs = &&;for i in 0...10 {
rs += &\(i)&
}print(rs)
这个语句会输出 0 到 10 之间的所有数字, 0…10 这个表示 Range 区间的范围。 当然,对于我们刚才的数组遍历来说, 一般数组索引都是数组长度减去 1, 用这个区间处理起来就会比较麻烦, 不过好在 Swift 给我们提供了另外一种 Range 方法:
for i in 0..&numberList.count {
rs += &\(i)&
这次我们换成了 0..&numberList.count, 这种形式会排除闭区间最后那个数组,然后我们就可以在循环中用索引进行访问啦(注意符号 ..& 两边不要有空格)。
好了,今天跟大家分享的内容就这么多。C 风格的循环语句其实更多是我们的一个长期养成的习惯问题。 世界的一切都在进步发展,包括开发语言也是一样。 看了 Swift 提供的循环语法, 你对 C 风格循环还有没有存在的必要时什么看法呢。 早些拥抱趋势和变化总是好的。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 xcode 升级swift版本 的文章

 

随机推荐