Swift / iOS:向数组添加元素但不可访问

时间:2014-10-20 21:28:59

标签: arrays swift

我无法理解为什么在使用.append

后无法访问数组中的元素

我在这里宣布一个空数组......

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)

我得到&#34; 0&#34;作为输出,好像没有元素添加到数组中。

此处定义了对象......

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

我在创建和附加对象的循环之后设置了一个断点,它们在调试器本地中存在于正确的索引处,但是不可访问。

提前致谢!

1 个答案:

答案 0 :(得分: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)
}