我无法理解为什么在使用.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
我在创建和附加对象的循环之后设置了一个断点,它们在调试器本地中存在于正确的索引处,但是不可访问。
提前致谢!
答案 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)
}