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

时间:2017-09-13 05:12:13

标签: swift3 xcode8

例如,我有一个类" Person",及其所有成员变量。

我的用户界面包含 NSTextField 提交按钮。当用户在文本字段中输入名称并单击提交时,新的" person"对象被实例化,所以

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

我们的想法是拥有这些" Person"存储在对象数组中的对象,以供以后参考和修改。

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

1 个答案:

答案 0 :(得分:0)

每当你开始思考"我需要以某种方式动态创建新变量",不要。你可能不需要这样做。大多数情况下,您需要一种数据结构

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

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

var myDictionary = [String: Person]()

现在,而不是这样做:

let (NSTextField.stringValue) = Person(name: NSTextField.stringValue)
你做了

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

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

myDictionary["Tom"]

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