如何接受来自NSTextField的用户输入以使用stringValue作为变量名来实例化新对象?
问题描述:
例如,我有一个类“Person”,其所有成员变量。如何接受来自NSTextField的用户输入以使用stringValue作为变量名来实例化新对象?
我有一个用户界面,NSTextField和提交按钮。当用户在文本字段中输入一个名称,点击提交,一个新的“人”对象实例化,使
let (NSTextField.stringValue) = Person(name: NSTextField.stringValue)
的想法是有存储在对象上的更高版本的阵列,这些“人”对象参考和修改。
另外,我已经考虑过,每个Person对象都有一个字符串变量“Name”,因此用另一个现有对象的名称创建一个新对象不会覆盖当前实例化的任何东西 - 但在这种情况下,我需要一种方法来迭代通用名称,比如person1,person2,person3。但是,我无法找到关于如何自动执行该过程的任何信息。
答
每当你开始思考“我需要以某种方式动态地创建新变量”,请不要。你可能不需要那样做。大多数情况下,您需要一种数据结构。
在这里,你想要自定义名称的变量。你应该使用字典。字典就像真正的字典,你有键和值。每个键对应一个值,键不能包含重复项。
与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
啊!我倒退了。 – BrianMagus
@BrianMagus如果你认为我的答案回答你的问题,请考虑接受它! – Sweeper