1. 字符串
字符串创建
创建一个空的字符串: let emptyString = ""
使用初始化器来创建: let aString = string()
查看字符串是否为空: aString.isEmpty
字符串拼接: var a = "Hello"; a += ", World!"
字符串其实就是一个有Character对象组成的序列.
var veversedString = ""
for character in "Hello" {
reversedString = String(character) + reversedString;
} //reversedString: olleH
计算字符串中有多少个字符: countElements("Hello") //=5
2. CountElements函数实际上可以计算任意集合中元素的个数, 包含数组和字典, Sting中字符个数不等于字符数, Unicode字符的大小范围为1~4个字节, 具体取决于类型(例如: emoji为4个字节)
3. 比较字符串, 比较两个字符串只需要使用==运算符, 这个运算符检查两个字符串中的内容
let string1: Sting = "Hello"; let sting2: String = "hell"; if string1 == string2 {}
4. 查看两个字符串变量是否引用同一个对象, 使用===运算符.
if string1 as AnyObject === string2 as AnyObject { println("are the same object") }
5. 查找字符串, 可以利用hasPrefix和hasSuffix方法查看字符串是否具有前缀后缀
if string1.hasPrefix("H") {} if string1.hasSuffix("l")
6. 字符串转NSData
let stringToConvert = "Hello, Swift"
let data = stringToConvert.dataUsingEncoding(NSUTF8StringEncoding)
7. 从文件和URL加载数据
从URL加载:
if let fileURL = NSBundle.mainBundle().URLForResource("SomeFile", withExtension: "txt") {
let loadedDataFromURL = NSData(contentsOfURL: fileURL)
}
从文件中加载
if let filePath = NSBundle.mainBundle().pathForResouce("SomeFile", ofType: "txt") {
let loadedDataFromPath = NSData(contentsOfFile: filePath)
}
8. 序列化与反序列化, 我们可以将对象转化为数据, 为此首先遵循NSObject和NSCoding协议. 然后实现两个方法, 一个是encodeWithCoder, 一个是以NSCoder为参数的初始化函数.
class SerializableObject: NSObject, NSCoding {
var name: String?
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name!, forKey:@"name")
}
override init () {
self.name = "My Object"
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey("name") as? String
}
}
9. 通过NSKeyedArchiver和NSKeyedUnarchiver类从NSData中加载对象,
let anObject = SerializableObject ()
anObject.name = "I'm saving"
let objectConvertToData = NSKeyedArchiver.archiverDataWithRootObject(anObject)
//将其转换成对象, 有可能返回失败, 所以unArchiverObjectWithData是可选值, 因此要用as?来参看是否成功.
let loadedObject = NSKeyedUnarchive.unarchiveObjectWithData(objectCovertToData) as? SerializableObject