質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift Playground

Swift Playgroundは、Swiftをインタラクティブに習得できるiPad向けのアプリケーション。コーディングの知識は一切必要なく、Swift Playgrounds上でプログラミングしたコードによりドローン・ロボットを自在に動かすことが可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

867閲覧

Swift インスタンスの作成

hiyoko_piyo

総合スコア2

Swift Playground

Swift Playgroundは、Swiftをインタラクティブに習得できるiPad向けのアプリケーション。コーディングの知識は一切必要なく、Swift Playgrounds上でプログラミングしたコードによりドローン・ロボットを自在に動かすことが可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/04/11 05:47

前提・実現したいこと

Swift初学者です。
用語等使い方間違っているよ、という点があるかもしれませんが、どうぞよろしくお願いいたします!
開発環境:XcodeVer12

現在、tableViewを利用し、本の情報(タイトル・著者)を一覧で表示させるアプリを作成中です。
その中で、Swiftのクラスとインスタンスについて学習するため、
本の情報をBookInfoクラスに持たせ、別のメインクラスでBookInfoクラスのインスタンスを作成し、
本の情報を入れたいと考えています。

その事前練習として、まずはBookInfoクラスにて、インスタンスを作成し、本の情報を入れてみようとしたところ以下のエラーが出ました。

対処法の検討がつかず、困っています。
原因と解決法についてご教示いただけると幸いです。
※回答のために不足している情報がございましたらお知らせください。

発生している問題・エラーメッセージ

エラーメッセージ Expressions are not allowed at the top level ### 該当のソースコード import Foundation class BookInfo { var bookTitle: String? var author: String? } let bookInfo1 = BookInfo() bookInfo1.author = "著者" //エラー bookInfo1.bookCover = "タイトル" //エラー

試したこと

原因はインスタンスをクラスの{}の外に書いていること?のようですが、インスタンスの書き方をネットで見てみると、
上記の書き方と同じものが見られ、また参考にした動画にも同じ方法で記載がされていました。

【Swift入門講座】1時間で基礎を固めよう!概念や基礎を徹底解説(まとめ動画)(56分頃から上記と同様の形の記述があります)

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/04/11 06:09

新規プロジェクトで iOS アプリ等ではなく、Playground を選択してそのコードを書けば良いのでは。
hiyoko_piyo

2021/04/11 08:03

アドバイスありがとうございます。 早速してみようと思います。 一点お聞きしたいのですが、Playgroundでコードを書いて問題がなかった場合、現在のxcodeプロジェクト??で発生しているエラー原因は何なのでしょうか…?
hoshi-takanori

2021/04/11 08:10

class BookInfo { ... } や let bookInfo1 = BookInfo() は宣言文 (前者はクラス宣言、後者は変数宣言) なので関数やメソッドの外にも書けますが、 bookInfo1.author = "著者" や print(bookInfo1.author) などは実際に処理を行う文なので、本来は関数やメソッドの中に書く必要があります。(そうでないと、その処理を行うタイミングが分からないので。) が、Playground ではこれらを関数の外に書いて実行することができるのです。
hiyoko_piyo

2021/04/11 13:22

なるほど!! 処理を行う分を関数やメソッドの中に書くという初歩的な部分の理解が抜けていました… そしてPlaygroundがどういうものかを理解できていませんでした。 大変丁寧なご説明ありがとうございます!! 大変勉強になりました!
guest

回答1

0

ベストアンサー

SwiftUIで簡単なクラスのサンプルを書いてみました。
いろいろな書き方がありますが、参考にしてみてください。

SwiftUI

1◆ ファイル名:SubClass.swift 2 3import Foundation 4 5class BookInfo { 6 var title: String = "" 7 8 init(title:String) { 9 self.title = title 10 } 11}

SwiftUI

1◆ ファイル名:ContentView.swift 2 3import SwiftUI 4 5struct ContentView: View { 6 var body: some View { 7 Button(action: { 8 let book = BookInfo(title:"Hello World") 9 print(book.title) 10 }) { 11 Text("Click me.") 12 } 13 } 14}

投稿2021/04/11 06:57

technocore

総合スコア7200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiyoko_piyo

2021/04/11 08:05

コードを書いてくださりありがとうございます。 勉強させていただきます。 そして一点教えていただきたいのですが、上記のコードのエラー原因は何でしょうか…?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問