Swift 让常数不出现在类中的其他函数中
在我在viewDidLoad中声明了常量“jumbleDictionary”之后,“solve:”方法中似乎无法识别它 为什么会这样?我尝试在顶级代码中声明它,但我想用Date()调用来度量加载NSDictionary所需的时间,结果遇到了“预期声明”错误 但是把它放在一个方法中似乎对其他方法隐藏了这个符号。我不记得这在Objective-C中是一个问题-我记得,一个类的所有属性都可以在所有方法中使用Swift 让常数不出现在类中的其他函数中,swift,macos,Swift,Macos,在我在viewDidLoad中声明了常量“jumbleDictionary”之后,“solve:”方法中似乎无法识别它 为什么会这样?我尝试在顶级代码中声明它,但我想用Date()调用来度量加载NSDictionary所需的时间,结果遇到了“预期声明”错误 但是把它放在一个方法中似乎对其他方法隐藏了这个符号。我不记得这在Objective-C中是一个问题-我记得,一个类的所有属性都可以在所有方法中使用 import Cocoa class JumbleController: NSViewCon
import Cocoa
class JumbleController: NSViewController {
@IBOutlet weak var scrambledWordField, solutionWordsField, elapsedTime: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
let jumbleDictionary: NSDictionary? = NSDictionary.init(contentsOfFile: Bundle.main.path(forResource: "BigDictionary", ofType: "plist")!)
}
@IBAction func solve(sender: NSTextField)
{
let timeStart = Date.init()
var userWordString = scrambledWordField.stringValue.lowercased()
if Range(4...15).contains(userWordString.characters.count) {
userWordString = String(Array(userWordString.characters).sorted())
if let solutionWordArray = (jumbleDictionary?[userWordString] as? [String]?)!
{
let timeEnd = Date.init()
solutionWordsField.stringValue = solutionWordArray.joined(separator: "\n").uppercased()
elapsedTime.doubleValue = timeEnd.timeIntervalSince(timeStart)
}
else {
solutionWordsField.stringValue = "No Solution Found."
}
}
else {
solutionWordsField.stringValue = "Must be 4 to 15 letters."
}
}
}
列表项这是一个范围问题。在方法中声明变量时。它仅对该方法可见。由于jumbleDictionary是在viewDidLoad()方法中定义的,因此它仅在那里可用 试试这个:
var jumbleDictionary: NSDictionary?
override func viewDidLoad() {
super.viewDidLoad()
jumbleDictionary = //whatever you want
}
这是一个范围问题。在方法中声明变量时。它仅对该方法可见。由于jumbleDictionary是在viewDidLoad()方法中定义的,因此它仅在那里可用 试试这个:
var jumbleDictionary: NSDictionary?
override func viewDidLoad() {
super.viewDidLoad()
jumbleDictionary = //whatever you want
}
啊,所以我得到它的方式就像Objective-C中的局部变量?是的,它是该函数的局部变量。当我把它放在函数外时,变量现在在类的范围内:在类的任何地方都可用,但在其他类中不可用Sah,所以我的方法就像Objective-C中的局部变量?是的,它是该函数的局部变量。当我把它放在函数之外时,变量现在在类的作用域中:在类的任何地方都可用,但在其他类中不可用