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

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

ただいまの
回答率

90.49%

  • Swift

    7262questions

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

  • Xcode

    4109questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • Xcode 7

    615questions

    Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Expected declaration が解決できません。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 215

taka_teacher

score 8

snsの勉強のために、コードを書いています。

Expected declarationエラーがコマンド+Bで出てしまいます。

原因として
1 カメラの使い方が間違っている
2 extentionの使い方が間違っている
3 そもそもコードの書き方が間違っている

のどれかだとは思いますが、僕の能力ではわかりません。
解決方法がわかる方、どうぞよろしくお願いします。

学習のため、xcode7.0のバージョンで記しています。

import UIKit
import Photos

class PostViewController: UIViewController {


    //@IBOutlet var navigationBar: UINavigationItem!

    @IBOutlet var navigationBar: UINavigationBar!

    @IBOutlet var userProfileImage: UIImageView!


    @IBOutlet var postText: UITextView!


    @IBOutlet var postImage: UIImageView!


    @IBOutlet var usernameLabel: UILabel!

    @IBOutlet var createdAt: UILabel!

    @IBOutlet var backButton: UIBarButtonItem!
    @IBOutlet var postButton: UIBarButtonItem!

    private var PostImage: UIImage




    override func viewDidLoad() {
        super.viewDidLoad()

        // navigationBar.tintColor = UIColor.whiteColor()

        navigationBar.tintColor = UIColor.whiteColor()
        navigationBar.titleTextAttributes = [NSFontAttributeName: UIColor.whiteColor()]
        navigationBar.barTintColor = UIColor(hex: "1A237E")

        userProfileImage.layer.cornerRadius = userProfileImage.layer.bounds.width/2
        userProfileImage.clipsToBounds = true

        postText.text = ""
        postText.becomeFirstResponder()

        //notificationcenter
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyBoardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyBoardWillShow:", name: UIKeyboardWillShowNotification, object: nil)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }


    func keyboardWillHide(notificaton: NSNotification){

        self.postText.contentInset = UIEdgeInsetsZero
        self.postText.scrollIndicatorInsets = UIEdgeInsetsZero

    }

    func keyboardWillShow(notificaton: NSNotification){
        let userInfo = notificaton.userInfo ?? [:]
       // let keyboardSize = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue().size
        let keyboardSize = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue().size

        self.postText.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height+10, right: 0)
        self.postText.scrollIndicatorInsets = self.postText.contentInset



    }


    @IBAction func backButton_Clicked(sender: AnyObject) {

        postText.resignFirstResponder()
        dismissViewControllerAnimated(true, completion: nil)

    }


    @IBAction func postButtonClicked(sender: AnyObject) {

        postText.resignFirstResponder()
        dismissViewControllerAnimated(true, completion: nil)
    }




}

extension PostViewController:UIImagePickerControllerDelegate,UINavigationControllerDelegate {
    @IBAction func PickFeaturedImage(sender: AnyObject) {

        let authorization = PHPhotoLibrary.authorizationStatus()
        if authorization == .NotDetermined {
            PHPhotoLibrary.requestAuthorization({ (status) -> Void in
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    self.PickFeaturedImage(sender)
                })
            })
            return

            if authorization == .Authorized {
                let controller = ImagePickerSheetController()
                controller.addAction(ImageAction(title: NSLocalizedString("Take a Photo or Video", comment: "ActionTitle"), secondaryTitle: NSLocalizedString("Use this one", comment: "ActionTitle"), handler: { (_) -> () in
                    self.presentCamera()

                    }, secondaryHandler: { (action, numberOfPhoto) -> () in
                        controller.getSelectedImagesWithCompletion({ (images) -> Void in
                            self.PostImage = images[0]
                            self.postImage.image = self.PostImage
                        })
                }))
                controller.addAction(ImageAction(title: NSLocalizedString("Cancel", comment: "ActionTitle"),  style: .Cancel, handler: nil))

                presentViewController(controller, animated: true, completion: nil)
            }

        }

        func presentCamera() {
            let imagePicker = UIImagePickerController()
            imagePicker.allowsEditing = false
            imagePicker.delegate = self
            imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
            self.presentViewController(imagePicker, animated: true, completion: nil)

        }

        func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject :AnyObject]!) {
            self.postImage.image = image
            self.dismissViewControllerAnimated(true, completion: nil)

        }

}

エラー画像

イメージ説明

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

check解決した方法

+2

expected declarationにおいてのエラーは
最後の閉じ括弧が不足していることにより、解決しました。

エラーを調べるために行ったこと
<teratail使用前>検証時間:2日
・エラーの検索と翻訳
・翻訳により専門用語がわからないため、さらに検索。
・どうしても解決できないので、学習の動画内容と同じ環境にして挑戦。
・基本にかえって再度学習。(codeの基本とカメラ使用時のcodeの書き方)

<teratail使用後>5分
・数分で回答していただき、エラーの原因が閉じ括弧にあることがわかりました。

その後、新たなエラーが出ましたが、それはまた別の質問で解決できるようにする。

反省点:
質問1つにつき、一つの回答。次のエラーまで求めることは相手を不快にしてしまい、このサイトの目的からずれてしまうこと。

感想
完全に初心者は要点を絞って、質問するようにする。調子に乗って、次から出てくるエラーの質問をしないようにする。

回答していただいた方には感謝の気持ちでいっぱいです。始めたばかりの超初心者ですが、この先もどうぞよろしくお願いします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

PostImageの初期値がありません。とりあえず、

private var PostImage: UIImage = UIImage()

でいいと思います。

なお、質問内のコードを見る限りではPostImageは不要です。

self.postImage.image = images[0] //PostImageを介さず直接代入

 追記

エラーメッセージをしっかり読んで下さい。

Class 'PostViewController' has no initializers
Stored property 'PostImage' without initial value prevents synthesized initializers

というようなエラーが出ていると思います。
一行目しか見ていないようですが、二行目を見れば一目瞭然のエラーです。

 編集後の質問への回答

@IBAction func PickFeaturedImage(sender: AnyObject) {

の閉じカッコが無いように見えますが。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/22 11:04

    早急な対応誠にありがとうございます。
    エラーメッセージが少々違いました。
    一番最後に「Expected declaration」のみのエラーです。
    教えていただいた通りにコードしましたが、まだ同じ状態です。
    質問内容を修正かけて出させていてだきます。

    キャンセル

  • 2018/05/22 11:09

    エラーを調べるために、翻訳することが多いのですが、以前のエラーは解決済みでした。大変申し訳ありません。

    キャンセル

  • 2018/05/22 11:22

    何度もすみません。全て指南通りタイプしたら、presentCameraのところでエラーが出ました。

    キャンセル

  • 2018/05/22 11:26

    この質問は、あなたのアプリが完成するまで続ける気なのでしょうか?

    キャンセル

  • 2018/05/22 11:28

    すみません。慣れていない上に、不快にさせてしまいました。一つずつ解決できるように頑張ります。

    キャンセル

+1

閉じかっこが一つ足りないだけじゃないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/22 11:23

    ありがとうございます。やってみましたが、新たにpresentCameraのエラーが出ました。

    キャンセル

  • 2018/05/22 11:47

    いまいちど、https://teratail.com/help/question-tips をお読みになられることをお勧めします。

    本件に関しては、いったん解決済みとして、また困ったときに、改めて質問をするのが良いと思います。

    キャンセル

  • 2018/05/22 11:56

    ありがとうございます。全く分からないまま、解決方法を模索していましたが、使い方をよく理解してから再度質問させてください。

    キャンセル

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    入力フォームが移った際に表示位置を再調整する

    キーボードを表示した際に入力欄(UITextView)が隠れてしまう問題に関する質問です。 ScrollView上に設置した2つの入力欄のうち、片方はキーボードが表示されると

  • 解決済

    inputAccessoryView内にある、UITextViewにフォーカスを当てたい

    お知恵をお貸しください。 説明が非常に難しいのですが、キーボードにinputAccessoryViewで、表示や非表示になると追随して表示されたり消えるviewを追加します。

  • 解決済

    [swift]画像アップロードについて

    こんばんは。 現在簡単な画像アップロードアプリを作成しようと考えております。 先に画像アップロード部分のみを実装したいと考えており、参考サイトより作業しているのですが、use 

  • 解決済

    Swift キーボード以外の操作を無効

    前提・実現したいこと keyboardを表示している時にそれ以外の操作(タップ)を無効にする方法はありますか? 例えばKeybordを表示中に画面がスクロールしたり、他所をタッ

  • 受付中

    String型をDouble型に変換したい

      前提・実現したいこと UITextfieldに記入された数字をDouble型に変換したいのですがうまくいきません。 助けてください。

  • 受付中

    カメラアクセスと写真のアップロードができない

    作ったアプリでカメラアクセスと写真のアップロードができません。 Xcodeから自分のiPhoneでエミュレータを起動したのですが Camera access ボタンとPhoto

  • 解決済

    NavigationBarの戻るボタンの連打防止

    前提・実現したいこと NavigationBar <Backボタンの連打防止 発生している問題・エラーメッセージ A->B->Cへ画面遷移した後 C画面にて表示されているNav

  • 解決済

    JSQMessagesViewControllerの自動返信

    こちらのサイトを参考にJSQMessagesViewControllerの導入を試してみました。 https://qiita.com/kinopontas/items/a0c824

同じタグがついた質問を見る

  • Swift

    7262questions

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

  • Xcode

    4109questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • Xcode 7

    615questions

    Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。