如何在Swift中向自定义对象数组添加元素

时间:2015-08-31 11:50:44

标签: ios swift

我正在使用此代码将自定义对象添加到数组中,然后在自定义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语句确实给出了结果,但对象永远不会被添加到数组中。

任何关于我做错事的想法都会有很大帮助。

3 个答案:

答案 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\)")