前提・実現したいこと
書籍「詳細!Swift iPhoneアプリ開発入門ノート: iOS 12+Xcode 10対応」を読みながら学んでいる初学者です。
P163の「別のファイルに定義してあるクラスを利用する」でエラーが解決できずに困っています。
発生している問題・エラーメッセージ
発生している問題
MyClass.swiftファイルを読み込むためのimport文は必要ないとのことなので、MyClass.seiftに記述したコードをViewController.swift側で読み込んでハローが表示されるはずなのですが、エラーの詳細を調べてみると「宣言していない変数等を記入しているために出るエラー」とのことで、Myclass.swiftからうまいこと引っ張ってこれていないように見受けられました。
エラーメッセージ
swift
1Use of unresolved identifier 'MyClass'
該当のソースコード
ViewController.swift
swift
1class ViewController: UIViewController { 2 3 4 override func viewDidLoad() { 5 super.viewDidLoad() 6 let myObj = MyClass() //←ここでエラーが出ます。 7 myObj.hello() 8 } 9 10//★ 11}
MyClass.swift
swift
1import Foundation 2 3//MyClassクラスの定義 4class MyClass { 5 let msg = "ハロー" 6 func hello(){ 7 print(msg) 8 } 9}
試したこと
本に記述してある通りに記述してみたのですが、どうも上手くいきません。
★の位置に
//MyClassクラスの定義 class MyClass { let msg = "ハロー" func hello(){ print(msg) } }
を記述してみるとエラーは解除されるのですが、今回は「別のファイルに定義してあるクラスを利用する」を行いたいと考えています。
スペルミスもあるのかなと思い、エラーの単語MyClassをコピペしてみたものの、そうではないようです。
もしかしたらバージョンの違いで記述方法が異なるのかなとも思いました。
追記
ViewController.swift
swift
1//ViewControllerクラスの定義 2class ViewController: UIViewController { 3 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view. 8 9 10 11 //103、MyClassのインスタンスmyObjを作る 12 let myObj = MyClass() 13 myObj.hello() 14 15 16 }
MyClass.swift
swift
1import Foundation 2 3class MyClass { 4 let msg = "ハロー" 5 func hello() { 6 print(msg) 7 } 8}
補足情報(FW/ツールのバージョンなど)
マシンの環境
macOS Catalina Version 10.15.3
Xcode Version 11.4
Swift version 5.1.3
書籍のバージョン
Xcode Version 10
Swift version 4.2
回答3件
あなたの回答
tips
プレビュー