Swift Object
一、String (NSString)
Swift中的字符串是用String
关键词来定义的,同时它也是一些字符的集合,用Character
定义。
1-1、初始化
// 两种初始化为空
var learnAString = ""
var learnBString = String()
1-2、判断是否为空
if learnAString.isEmpty{
print("A is Empty")
}
1-3、字符串变长
如果使用
var
关键词定义的字符串即为可修改的变长字符串,而let关键词定义的字符串是常量字符串,不可修改。
var learnBString = String()
learnBString.appendContentsOf("B")
let learnCString = "C"
learnCString.appendContentsOf("D") // 这里会报错,let类型不可变
可以使用
+
和+=
进行长度的变化
- let learnDString = "I am bad man"
let learnFString = "No, I am very bad man"
let learnEString = learnDString + learnFString
print("E=(learnEString)")
// E=I am bad manNo, I am very bad man
+=
let testStr0 = "str0"
var testStr1 = "str1"
testStr1 += testStr0
print("str1===\(testStr1)")
// 打印 str1===str1str0
1-4、字符串比较
相等
let testStr0 = "0"
let testStr1 = "1"
if testStr1 == testStr0 {
print("equal")
}
是否有前缀或后缀
let testStr2 = "I want to learn Swift"
if testStr2.hasPrefix("I want")
{
// 有前缀
print("Have Pre")
}
if testStr2.hasSuffix("Swift")
{
// 有后缀
print("have Suffix")
}
4-5、大小写转换
let testStr = "I am Normal"
let testUpStr = testStr.uppercaseString
let testLowerStr = testStr.lowercaseString
print("up=\(testUpStr),low=\(testLowerStr)")
// 打印日志 up=I AM NORMAL,low=i am normal
4-6、计算字符串的长度
字符串的字符的个数与NSString
的不一样,没有length
方法。在String
中,对字符的操作,主要是通过其属性characters
来操作。
let str = "yang hello"
print(str.characters.count) // 10
最好增加一个扩展
extension String {
func p_length() ->Int {
return self.characters.count
}
}
print(str.p_length()) // 一样的效果
4-7、替换删除,相对来说这是我比较关注的
public mutating func replaceRange(subRange: Range<Index>, with newElements: String)
public mutating func insert(newElement: Character, atIndex i: Index)
public mutating func removeRange(subRange: Range<Index>)
替换
var testString = "we love English"
let rang = testString.rangeOfString("love")
testString .replaceRange(rang!, with: "study")
print("\(testString)") // we study English
插入
var testString = "ABCDEFG"
let char1: Character = "A"
testString .insert(char1, atIndex: testString.startIndex)
print("\(testString)") // AABCDEFG
删除
testString .removeAll()
// 相等
testString .removeRange(Range(start: testString.startIndex, end: testString.endIndex))
二、Array(NSArray)
数组是储存同类型不同值的序列化列表。
Swift数组是储存确定的值,这个Objective-C中的NSArray和NSMutableArray类是有区别的。因为它们是储存各种的对象,而且并不提供返回任何有关对象的具体信息。在Swift中,无论是确定的声明,还是隐式的声明,数组是非常确定它自身是储存什么样的类型,而且,它并不一定要求储存的是类对象。所以Swift数组是类型安全的,因为它一直都确定它自身所能包含的值。
2-1、初始化
var shoppingList: Array = ["eggs", "milk"]
2-2、检查数组是否为空
if shoppingList.isEmpty {
print("Empty")
}
2-3、添加数组元素
shoppingList.append("apple") // 打印 ["eggs", "milk","apple"]
shoppingList += ["banana"] // 打印 ["eggs", "milk","apple","banana"]
#waring shoppingList += "orange" //这是不允许的
2-4、获取数组元素和打印
// 获取数组的第一个元素,Array 也是从第一个元素开始的
print("first===\(shoppingList[0])") // first===eggs
for item in shoppingList
{
print(item)
}
2-5、数组中的插入与删除
shoppingList.insert("bags", atIndex: 0)
print(shoppingList)
shoppingList.removeAtIndex(2)
print(shoppingList)
// 打印
///["bags", "eggs", "milk", "apple", "banana"]
///["bags", "eggs", "apple", "banana"]
三、Dictionary (NSDictionary)
字典是储存同一类型但是不同值的容器。每一个值都对应这一个唯一的键(Key),就像是字典内的每一个值都有一个标识符。和数组内的元素是有区别的,字典内的元素是没有特殊的序列的。当你需要根据标识符来查找批量的值时,就可以使用字典。同样的,真实的物品字典常常用来当作查找特定字典的标识符。
3-1、初始化
var oneDic = ["one":"1","two":"2"]
var twoDic :[String:String]= ["one":"1","two":"2"]
3-2、获取和改变
var oneDic:[String:String] = ["one":"1","two":"2"]
// 获取
let oneValue:String! = oneDic["one"]
// 两种改变的方式
oneDic["one"] = "0"
oneDic.updateValue("3", forKey: "one")
//两种删除的方式
oneDic.removeValueForKey("one")
oneDic["one"] = nil
四、学习中遇到的问题
字符串不是指针,而是实际的值,在Swift中,一个String类型就是一个实际的值,当定义一个新的String,并且将之前的String值拷贝过来的时候,是实际创建了一个相等的新值,而不是仅仅像指针那样指向过去。
-
用数组的时候,我们经常涉及到在枚举数组内元素的同时需要使用对应的下标索引时,OC中使用
enumerateObjectsUsingBlock:
,比较方便的,但是Swift中呢,根据onevcat测试推荐,从性能上,以及enumerateObjectsUsingBlock:
需要作用在NSArray
上,所以我们在Swift 还是优先选择快速枚举比较好。// enumerateObjectsUsingBlock let testArray: NSArray = [2,6,7,3,9] var result = 0 testArray.enumerateObjectsUsingBlock { (num, idx, stop) -> Void in result += num as! Int if idx == 2 { stop.memory = true } } print(result) //15 // 快速枚举 var result0 = 0 for (idx, num) in [1,2,3,4,5].enumerate() { result0 += num if idx == 2 { break } } print(result0) //6
上一篇: 深入了解MySQL 5.5分区功能增强_MySQL
下一篇: Mongoose初步认识(1)