swift初心者なのですが、ViewControllerの関数内で使用した変数を同じViewController内で使用できません。どうかご教授おねがいします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
関係のないタグは削除して下さい。
2019/04/26 09:44
当該のソースコードを記載してください。
回答1件
0
ベストアンサー
関数内のローカル変数にするのではなくインスタンス変数にして下さい。
swift
1class Hoge { 2 func hoge() { 3 var value = 123 4 print(value) 5 hogehoge() 6 print(value) 7 } 8 func hogehoge() { 9 value = 999 //error 10 } 11}
swift
1class Hoge { 2 var value = 123 3 func hoge() { 4 print(value) 5 hogehoge() 6 print(value) 7 } 8 func hogehoge() { 9 value = 999 10 } 11} 12 13Hoge().hoge() //=> 123, 999
投稿2019/04/26 09:44
総合スコア16731
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/26 09:48
回答ありがとうございます。まだ、よく分かりませんがインスタンス変数を調べてみたいと思います。
2019/04/30 01:45
質問が具体的でなかったので改めて質問いたします。
実は以下のコードでfunc userContentController内でnumberの値を取りたいと思っております。
しかし、let parameters: Parameters = ["target_user_id": number]に値を持ってこれないという状況です。
ご解答よろしくお願いします。
<PHP>
以下のJavaScriptを埋め込み
<script>
var number = <?php echo $user_id;?>
window.webkit.messageHandlers.hoge.postMessage(number)
</script>
<Swift>
ViewController.swift
ViewController.swift
class ViewController: UIViewController, WKScriptMessageHandler {
override func viewDidLoad() {
super.viewDidLoad()
let webConfig: WKWebViewConfiguration = WKWebViewConfiguration()
let userController: WKUserContentController = WKUserContentController()
userController.add(self, name: "hoge")
webConfig.userContentController = userController
let wkWebView = WKWebView(frame: .zero, configuration: webConfig)
self.view.addSubview(wkWebView)
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "hoge" {
let number = message.body as! Int
// do something
}
}
}
let parameters: Parameters = ["target_user_id": number]
※ let numberの値をlet parametersのnumberに持ってきたいと考えております。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。