16:48:45 锋少已加入Swifthumb QQ二群:245285613


韩智鸿工程师  17:01:48

Swift一个语法引起的热烈讨论

Swift一个语法引起的热烈讨论 - 敏捷大拇指 - Swift一个语法引起的热烈讨论


韩智鸿工程师  17:02:01
请问下这个!=nil 要怎么写

Anew阿牛  17:04:01
发帖去吧

蓝天  17:04:07
[Swift] 纯文本查看 复制代码
if let json = json {


Anew阿牛  17:04:09
最近运营严打

韩智鸿工程师  17:06:18
怎么理解 这句话呢?

韩智鸿工程师  17:06:19
[Swift] 纯文本查看 复制代码
if let json = json {


蓝天  17:06:24
@韩智鸿工程师  话说我昨天发的帖子里有个iOSBaseProject,里边有几个工具方法,就是利用JSONSerialization解析数据的
https://github.com/DingHub/iOSBa ... es/JSONHelper.swift

蓝天  17:06:27
可以看看

蓝天  17:06:33
可选绑定

蓝天  17:06:41
json是一个可选类型

韩智鸿工程师  17:07:29
嗯谢谢

蓝天  17:07:42
之前的写法是
[Swift] 纯文本查看 复制代码
if let newJson = json {

newJson就是json所包含的实际值,如果json是nil就不会走这个if分支

韩智鸿工程师  17:07:59
原来这样

蓝天  17:08:05
后边的语法简化了,可以直接
[Swift] 纯文本查看 复制代码
if let json = json {


韩智鸿工程师  17:08:28
好奇芭的语法

韩智鸿工程师  17:08:37
都反人类了

Anew阿牛  17:09:58
[Swift] 纯文本查看 复制代码
if let json = json  

这是3.0开始支持的吧?

芒果味  17:10:12
不是

蓝天  17:10:24
2.几就支持了

蓝天  17:10:27
具体记不清了

芒果味  17:10:33
我现在就在用

Anew阿牛  17:10:50
是觉得另取一个name挺别扭的

芒果味  17:10:51
就是一个判断nil的

Anew阿牛  17:10:58
的确是觉得另取一个name挺别扭的

蓝天  17:11:04
是的

芒果味  17:11:15
同一个name不好理解

Anew阿牛  17:11:19
想不到这种同名赋值的做法,Swift都支持

Anew阿牛  17:11:40
同一个name也就if这一行难理解,{}里面就好多了

芒果味  17:11:48
主要是没写全

Anew阿牛  17:12:06
增删这一行 都不用改里面的代码

芒果味  17:12:09
应该是
[Swift] 纯文本查看 复制代码
if let json = json as? JSON {

                }


韩智鸿工程师  17:12:52
估计一些不做SWIFT的程序员看到 if let a=a{ }  估计都蒙B了

蓝天  17:13:04
那是因为你前边把json定义成了AnyObject

韩智鸿工程师  17:13:09
谁还会想到样的逻辑

蓝天  17:13:11
所以要这样as。。。。

蓝天  17:13:30
看看我刚发的那个链接吧

蓝天  17:13:41
要用好swift的简洁

芒果味  17:13:51
前边的json没有定义任何类型  那个let在那写着呢

蓝天  17:14:21
[Swift] 纯文本查看 复制代码
let json: AnyObject? = try …


蓝天  17:14:25
就是这句了

芒果味  17:14:27
这样let的json  前边那个已经不是可选类型了

蓝天  17:14:42
嗯,是json的实际值

芒果味  17:14:57
你写这个跟上边那个if的不一样的

芒果味  17:15:16
这个json还是个可选类型

蓝天  17:15:19
[Swift] 纯文本查看 复制代码
let json: AnyObject? = try …

直接写成
[Swift] 纯文本查看 复制代码
let json = try…


蓝天  17:15:36
不过对try的用法,你那个截图也有些问题

蓝天  17:16:26
推荐一下王巍的《swifter 100个swift必备tips》

蓝天  17:16:39
资源很好找

蓝天  17:16:51
质量很高

蓝天  17:16:53
~~~

芒果味  17:17:05
你确定那个不是=的问题?

芒果味  17:17:14
你右边没有空格啊

蓝天  17:17:40
细节就不在这里纠结了

蓝天  17:17:46
先研究研究吧

芒果味  17:18:55
swift不是oc  右边没有空格肯定报错

Anew阿牛  17:18:59
等号两边都要空格,

Swift Style Guide 最详尽的 Swift 代码规范指南
http://www.swifthumb.com/thread-14380-1-1.html

芒果味  17:19:07
要不你就左边也别加空格

蓝天  17:21:21
嗯,这方面语法严格,编译器强制我们写美观~

蓝天  17:21:48
记得最初写那个 Range,
0..<100

蓝天  17:22:00
<号后边写了个空格

蓝天  17:22:07
死活没发编译

swifthumb  17:22:10
苹果Style

蓝天  17:22:17
后来才发现是不能要空格~

蓝天  17:22:52
这些细节想想都有意思在

蓝天  17:23:00
有趣

Anew阿牛  17:23:05
这次讨论要是发成帖子,对不在这个群里的人也补益到了