- 1.字符串String类型更加人性化,多行字符串文字,支持Range,也算集合类型
1.字符串
let name = "Hi,swift"
print(name.count)
print(name.isEmpty)
print(name.dropFirst())//去掉第一个元素,生成一个新元素(i,swift)
print(name.dropLast())//去掉最后一个元素生成一个新元素(Hi,swif)
print(name.dropFirst(Int(name.count-3)))
let time = "2017-12-26 16:40:45:33"
print(time.dropLast(Int(time.count-10)))
let mstr = String(name.reversed())//倒序元素
print(mstr)
//倒序reversed
let arr = ["1","2","3","4"]
for (_,item) in arr.enumerated().reversed() {
print(item)
}
//多行文字,通过一对三个双引号直接来赋值----- """ 要输入的文字在这对三引号之间 """
/// plist格式
let plistInfo = """
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<array>
<dict>
<key>title</key>
<string>相机</string>
<key>imageName</key>
<string>http://img.blog.csdn.net/20170217102843795</string>
</dict>
</array>
</plist>
"""
/// JSON格式
let jsonInfo = """
{
"data": {
"title": "apple"
"phone": "10086"
"creat_at": "2017-10-11"
}
}
"""
//古诗词
let poetry = """
《沁园春·雪》
北国风光,千里冰封,万里雪飘。
望长城内外,惟馀莽莽;大河上下,顿失滔滔。
山舞银蛇,原驰蜡象,欲与天公试比高。
须晴日,看红妆素裹,分外妖娆。
江山如此多娇,
引无数英雄竞折腰。
惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
一代天骄,成吉思汗,只识弯弓射大雕。
俱往矣,数风流人物,还看今朝。
"""
print(plistInfo)
print(jsonInfo)
print(poetry)
//2便捷的Range
var str = "Hello,swift!"
var index = str.index(of: ",")
let greeting = str.prefix(upTo: index!)
print(greeting)//Hello
index = str.index(index!, offsetBy: 2)
let name1 = str.suffix(from: index!)
print(name1)
print(Array(str.enumerated()).count)
for (_,item) in Array(str.enumerated()).enumerated() {
print(item)
}
//zip函数可以更改数字下标从1开始计数
print(Array(zip(1..., str)))//zip
//集合用法
// 字符串可以像集合那样进行遍历,直接通过.count知道字符串个数
var str1 = "Hello, swift!"
print(str1.characters.count) // Swift3.0 写法
print(str1.count) // Swift4.0 写法
/// 遍历
str1.forEach { (item) in
print(item)
}
str1.forEach {
print($0)
}
- 2.改进的private的访问权限,私有访问修饰符
Swift 3的一个元素,一些不太喜欢的是添加fileprivate 。 从理论上讲,这是非常好的,但实际上它的使用往往会令人困惑。 目标是在成员本身中使用private的,并且在您想要在同一文件中的成员共享访问的情况下很少使用fileprivate。 问题是Swift鼓励使用扩展将代码分解成逻辑组。 扩展被认为在原始成员声明范围之外,这导致对fileprivate的广泛需求。
struct SpaceCraft {
private let warpCode : String
fileprivate var name : String = "swift"
init(warpCode: String) {
self.warpCode = warpCode
}
}
let enterprise = SpaceCraft(warpCode: "It's swift")