objective-c - 使用自定义方法将自定义对象添加到数组 Swift 问题

标签 objective-c arrays object swift constructor

我对 Swift 还很陌生,所以我在这里问的不是为什么它不起作用,而是为什么它起作用。我期待一些不同的东西。我有三个类(class),其中一个名为 User.swift带有用户变量、获取方法和构造函数,另一个称为 UserList.swift一个数组和一个自定义方法来向其中添加对象,另一个是我简单地使用此方法将 User 添加到该数组中。 正如你所看到的,当我调用listManager.addUser(...)时我希望在括号之间写这样的内容:name: "random name", surname: "random surname", age: 0但这给了我一个编译错误,说“调用中存在无关参数标签'name:'”。如果我删除“姓名:”它可以工作,但如果我删除“姓氏:”或“年龄:”它就不行。 我将把我的代码放在这里(它的工作原理正如我所说,我只需要理解为什么)。

User.swift

import Foundation

class User: NSObject {

private var name: String
private var surname: String
private var age: Int

init(name: String, surname: String, age: Int){
    self.name = name
    self.surname = surname
    self.age = age;
}

func getName() -> String{
    return self.name
}

func getSurname() -> String{
    return self.surname
}

func getAge() -> Int{
    return self.age
}

}

UserList.swift

import UIKit

var listManager: UserList = UserList()

class UserList: NSObject {

var userList = [User]()

func addUser(name: String, surname: String, age: Int){
    userList.append(User(name: name, surname: surname, age: age))
}

}

我使用 addUser() 的类

listManager.addUser("random name", surname: "random surname", age: 0)

如您所见,没有“name:”标签

最佳答案

因为这是方法外部参数名称的规则。来自 the document :

Specifically, Swift gives the first parameter name in a method a local parameter name by default, and gives the second and subsequent parameter names both local and external parameter names by default. This convention matches the typical naming and calling convention you will be familiar with from writing Objective-C methods, and makes for expressive method calls without the need to qualify your parameter names.

如果你想这样调用它:

listManager.addUser(name: "random name", surname: "random surname", age: 0)

您必须声明addUser,例如:

func addUser(#name: String, surname: String, age: Int){
//           ^ This forces the external parameter name
    // ...
}

关于objective-c - 使用自定义方法将自定义对象添加到数组 Swift 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584793/

相关文章:

objective-c - Objective-C中@selector中的多个参数

php - 在整个应用程序中使用对象

java - Hadoop:处理大型序列化对象

ios - 基于自定义核心数据 setter 调度 NSNotification

ios - 弹出窗口中无法识别的选择器

iphone - "The operation couldn’ t 完成。 ( cocoa 错误 512。)”

javascript - 如何使用Chrome扩展存储API进行CRUD操作?

c - 声明大数组时出现堆栈溢出异常

javascript - 比较两个 JS 数组的内容

java - 返回对象数组中的单个对象