如何接受来自 NSTextField 的用户输入以使用 stringValue 作为变量名实例化新对象?

How can I accept user input from an NSTextField to instantiate a new object using the stringValue as the variable name?

例如,我有一个class "Person",它的所有成员变量。

我有一个带有 NSTextField提交 按钮的 UI。当用户在文本字段中输入名称并单击提交时,将实例化一个新的 "person" 对象,因此

let (NSTextField.stringValue) = Person(name: NSTextField.stringValue)

想法是将这些"Person"对象存储在一个对象数组中,供以后引用和修改。

或者,我当然考虑过每个 Person 对象都有一个字符串变量 "Name",因此使用另一个现有对象的名称创建一个新对象不会覆盖当前实例化的任何内容——但在在这种情况下,我需要一种方法来迭代通用名称,如 person1、person2、person3。但是,我也找不到有关如何使该过程自动化的任何信息。

每当您开始思考 "I need to somehow dynamically create new variables" 时,请不要。你可能不需要那样做。大多数时候,你需要一种数据结构

在这里,您需要具有自定义名称的变量。您可能应该使用字典。字典就像真正的字典,有键和值。每个键对应一个值,键不能重复。

String 作为键和 Person 作为值的字典应该可以完成这项工作:

var myDictionary = [String: Person]()

现在,不要这样做:

let (NSTextField.stringValue) = Person(name: NSTextField.stringValue)

你会

myDictionary[NSTextField.stringValue] = Person(name: NSTextField.stringValue)

要访问某个人,请执行以下操作:

myDictionary["Tom"]

有关详细信息,请参阅本文的 "Dictionaries" 部分; https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html