0
viewDidLoadで宣言した後、定数 "jumbleDictionary"が "solve:"メソッドで認識されないようです。他のクラスの関数に定数がありません
これはなぜですか?私はトップコードでそれを宣言しようとしましたが、NSDictionaryをロードするのにかかる時間を測定するDate()コールを置いて、それが "宣言を期待しています"というエラーになりました。
しかし、それをメソッドに入れると、他のメソッドからシンボルが隠れているようです。これがObjective-Cの問題であることは覚えていません。クラスのすべてのプロパティをすべてのメソッドで使用できることを覚えています。
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."
}
}
}
リスト項目
ああ、私は持っていた方法は、それはObjective-Cの内のローカル変数のようなものです:
はこれを試してみてください? – Harold
はい、その機能にローカルです。私が関数の外に置くところでは、変数はクラスのスコープにあります:クラスのどこでも使用できますが、他のクラスでは使用できません –