2014-10-20 43 views
2

我無法理解爲什麼我不能使用.append斯威夫特/ iOS版:追加添加元素數組,但不能訪問

我在這裏聲明空數組後訪問數組中的元素...

var entries:Array<Entry> = [] 

我再添加條目,這裏的陣列...

var json = self.JSONParseArray(data) 
for(var i = 0; i < json.count; i++) 
{ 
    let fName = json[i]["FirstName"] as String 
    let lName = json[i]["LastName"] as String 
    let sC = json[i]["SelectionCode"] as String 
    let id = json[i]["ID"] as String 
    let iURL = json[i]["ImageURL"] as String 
    let currEntry:Entry = Entry(fn: fName, ln: lName, sC: sC, id: id, img: iURL) 
    self.entries.append(currEntry) 
} 

但是,當我在這裏所說的.Count之間的方法...

println(self.entries.count) 

我得到「0」作爲輸出,就好像沒有元素添加到數組中一樣。

對象在這裏被定義...

class Entry { 
    var dbID:String 
    var firstName:String 
    var lastName:String 
    var selectionCode:String 
    var imageLink:String 

    init(fn:String, ln:String, sC:String, id:String, img:String){ 
     firstName = fn 
     lastName = ln 
     selectionCode = sC 
     dbID = id 
     imageLink = img 
    } 
} 

所以,當我試圖在數組中訪問一個元素是得到錯誤信息......

fatal error: Cannot index empty buffer 

我已經設置斷點在創建並附加對象的循環之後,它們存在於調試器本地的正確索引處但不可訪問。

在此先感謝!

回答

2

嘿有一個更好的方法來做到這一點。你在這裏所做的只是將某個值映射到其他值。如果你正在繪製一些東西,你應該考慮使用map函數。這裏是如何做到這一點:

let jsonArray = self.JSONParseArray(data) 
let entries: [Entry] = jsonArray.map { json: [NSObject: AnyObject] in 
    let fName = json["FirstName"] as String 
    let lName = json["LastName"] as String 
    let sC = json["SelectionCode"] as String 
    let id = json["ID"] as String 
    let iURL = json["ImageURL"] as String 
    return Entry(fn: fName, ln: lName, sC: sC, id: id, img: iURL) 
}