如何将对象从Swift中的Class添加到数组中



这是我的朋友类:

class Friend {
var firstName: String = ""
var lastName: String = ""
var age: Int = 0
var description:String = ""
init(firstname: String, lastname: String, age: Int) {
self.firstName = firstname
self.lastName = lastname
self.age = age
}
}

在这里,我应该在viewDidLoad函数中声明并实例化5个Friend对象,并将它们添加到"friendList"数组中。

import UIKit
class ViewController: UIViewController {
var friendsList: [Friend] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
friendsList.append("John", "Doe", 20)
}
}

斯威夫特告诉我;在对实例方法"append"的调用中没有完全匹配;在";friendsList.append"线

如果你最初创建所有朋友,你可以像下面这样使用

let friends = [Friend(firstname: "John", lastname: "Doe", age: 20),Friend(firstname: "doe", lastname: "John", age: 21)]

for friend in friends{
friendsList.append(friend)
} 
//////////////////////////////////////
(or) you can directly declare value for your global variable  
friendsList = [Friend(firstname: "John", lastname: "Doe", age: 20),Friend(firstname: "doe", lastname: "John", age: 21)]
///////////////////////////////////////////
(or) assign local variable value to your global variable
friendsList = friends

或者如果你一个接一个地添加,你必须首先创建对象

let friendOne = Friend(firstname: "John", lastname: "Doe", age: 20)
friendsList.append(friendOne)

数组(实际集合(函数append接受类型为<T>的参数,其中T是泛型类型;数组中元素的类型";。

因此,如果您有一个字符串数组,您需要将一个字符串传递到append:

var strings = [String]()
strings.append("a string")

由于您有一个Friend对象数组,因此需要将Friend的实例传递给append(_:)函数。追加调用中括号内的表达式是否计算为友元对象?

friendsList.append("John", "Doe", 20)

事实并非如此。您正在传递一个以逗号分隔的属性列表。据推测,这些是Friend的名字、姓氏和年龄,但append()函数并不知道。

你可以把它写成:

let aFriend = Friend(firstname: "John", lastname: "Doe", age: 20)
friendList.append(aFriend)

或与合一

friendList.append(Friend(firstname: "John", lastname: "Doe", age: 20))

这两种变化都会起作用。

最新更新