我无法理解为什么使用 .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)
我得到“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
我在创建和附加对象的循环之后设置了一个断点,它们存在于调试器局部变量中的正确索引处,但无法访问。
提前致谢!
最佳答案
嘿,有一个更好的方法来做到这一点。您在这里所做的一切都是从某个值映射到其他值。如果您正在映射某些内容,您应该考虑使用 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)
}
关于arrays - swift/iOS : Append Adding Elements to Array but are not Accessible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475242/