美文网首页ios知识科技圈程序员
Swift中Array和OC中的NSArray

Swift中Array和OC中的NSArray

作者: HWenj | 来源:发表于2016-03-03 23:26 被阅读1841次
概念

Array是Swift中的结构体类型(struct), 属于是值类型.
NSArray是OC中的类型, 属于引用类型.

    var aarr = ["happy", "every", "day"]
    var barr : NSMutableArray = ["happy", "every", "day"]
    
    //1
    aarr[2] = "minute" //直接改变了aarr第二个元素的值
    barr[2] = "minute" //让barr第二个元素指向"minute"
    print("1---\(aarr)")
    print("1---\(barr)")
    /*输出:
        1---["happy", "every", "minute"]
        1---(
        happy,
        every,
        minute
        )
    */
    
    //2
    func changeA (var a:Array<String>) {
        a[2] = "second" //a是对aarr的拷贝
    }
    func changeB (a : NSMutableArray) {
        a[2] = "second" //a是对barr的引用
    }
    changeA(aarr) //值类型赋值时进行拷贝, 改变是a[2]的值, aarr并没有影响
    changeB(barr) //引用类型赋值时传递的是引用, a[2]和barr[2]都指向同一个地址.
    print("2---\(aarr)")
    print("2---\(barr)")
    /*输出:
        2---["happy", "every", "minute"]
        2---(
        happy,
        every,
        second
        )
    */
Array和NSArray之间相互转换

Swift在数组方面Array很好的兼容了OC中的NSArray,可以直接进行赋值转换.

(1) 可以直接声明Array或者NSArray, 并进行遍历

    let swiftArray: Array<String> = ["10", "20","30","40","50"]  
    for element in swiftArray{  
        print(element)  
    } 

    let OCNSArray: NSArray = ["10", "20","30","40","50"]  
    for element in OCNSArray{  
       print(element)  
    } 

(2)可以声明一个NSArray数组,转化为Array数组,再进行遍历

    let OCNSArray: NSArray = ["10", "20","30","40","50"]  
    let swiftArray:[String] = OCNSArray as! [String]  
       
    for index in swiftArray{  
        print(index)  
    } 

(3)可以声明一个Array数组,转化为NSArray,再进行遍历

    let swiftArray: Array<String> = ["10", "20","30","40","50"]  
    let OCNSArray:NSArray = swiftArray  
    for index in OCNSArray{  
        print(index)  
    } 

相关文章

网友评论

    本文标题:Swift中Array和OC中的NSArray

    本文链接:https://www.haomeiwen.com/subject/awkokttx.html