我正在使用此代码将自定义对象添加到数组中,然后在自定义TableView中显示该数据。
var tempCount = self.people?.count
for var k = 0 ; k < tempCount ; k++
{
if let PERSON = self.people?[k]
{
let name = (PERSON.compositeName != nil) ? PERSON.compositeName : ""
let number = (PERSON.phoneNumbers?.first?.value != nil) ? PERSON.phoneNumbers?.first?.value : ""
let image = (PERSON.image != nil) ? PERSON.image : UIImage(named: "aks.jpg")
let details = Contact(userImage: image!, userName: name!, phoneNumber: number!)
println(details.userName + " " + details.phoneNumber)
self.arrayOfContacts?.append(details)
println(self.arrayOfContacts?.count)
}
}
数组中元素的数量似乎总是“没有”。由于某些原因。我已按以下方式声明了数组
var arrayOfContacts:[Contact]?
,Contact是数组应该包含的Object类型。
和另一个
var people : [SwiftAddressBookPerson]? = []
print语句确实给出了结果,但对象永远不会被添加到数组中。
任何关于我做错事的想法都会有很大帮助。
答案 0 :(得分:5)
您的数组被声明为Optional数组但未创建,因此它是nil
。
您的声明:
var arrayOfContacts:[Contact]?
添加实际空数组的创建:
arrayOfContacts = []
或者一下子创建它:
var arrayOfContacts:[Contact]? = []
答案 1 :(得分:1)
您的arrayOfContacts为零,因此arrayOfContacts?.count
也为零。
如果确实要追加到arrayOfContacts,请不要写self.arrayOfContacts?.append(details)
,因为这意味着“附加到arrayOfContacts但实际上我并不关心,如果arrayOfContacts是nil,只是放弃“。
相反,写self.arrayOfContacts!.append(details)
,因为现在这意味着“附加到arrayOfContacts,因为我真的很在意,请告诉我一个致命的崩溃错误,当arrayOfContacts是nil因为我将有弄清楚为什么这个数组在它不应该是的时候是nil。我的意思是,我是机器的主人,而不是相反,我很清楚当我想追加时,arrayOfContacts应该不是nil它“。
答案 2 :(得分:-1)
通常,当您处理数据时,您不仅拥有固定数量的元素。例如,您可以计算一个班级中多个成绩的平均值的程序:
var grade1 = 4
var grade2 = 3
var average = Double(grade1 + grade2) / 2.0
println("Average grade: \(average)")
如果我们想要该计划在我们有3个等级时也可以工作怎么办? 我们必须改变我们的计划才能使用3个等级。
var grade1 = 4
var grade2 = 3
var grade3 = 5
var average = Double(grade1 + grade2 + grade3) / 3.0
println("Average grade: \(average\)")