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

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

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

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

Q&A

解決済

2回答

177閲覧

コード上やコンソールではエラーが見受けられないのに、simulatorで非表示になってしまう

amazon_106

総合スコア50

Swift

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

0グッド

0クリップ

投稿2019/05/21 01:00

編集2019/05/21 06:55

やりたいこと
プロフィール画像やユーザーネーム、投稿画像を表示させたい

やったこと
・ディバック
・firebaseのプロジェクトの入れ替え

var post: Post? { didSet { guard let ownerUid = post?.ownerUid else { return } guard let imageUrl = post?.imageUrl else { return } // 原因コード ① guard let likes = post?.likes else { return } Database.fetchUser(with: ownerUid) { (user) in self.profileImageView.loadImage(with: user.profileImageUrl) self.usernameButton.setTitle(user.username, for: .normal) self.configurePostCaption(user: user) } postImageView.loadImage(with: post!.imageUrl) // 原因コード ② likesLabel.text = "(likes) likes" } } let likesLabel: UILabel = { let label = UILabel() label.font = UIFont.boldSystemFont(ofSize: 12) label.text = "3 likes" return label }()
addSubview(likesLabel) likesLabel.anchor(top: likeButton.bottomAnchor, left: leftAnchor, bottom: nil, right: nil, paddingTop: -4, paddingLeft: 8, paddingBottom: 0, paddingRight: 0, width: 0, height: 0) addSubview(captionLabel) captionLabel.anchor(top: likesLabel.bottomAnchor, left: leftAnchor, bottom: nil, right: rightAnchor, paddingTop: 8, paddingLeft: 8, paddingBottom: 0, paddingRight: 8, width: 0, height: 0)

上記の原因コードを追加後、画像1から画像2になってしまいます。
画像1

イメージ説明

画像2
イメージ説明
likesLabelというのはハートマークのことで、いいね機能を実装できないので、UILabelになっています。

デバックでは
イメージ説明
0が入っています。

よろしくお願いします。

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

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

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

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

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

fuzzball

2019/05/21 01:29

1. その一行を消せば画像は正しく表示されるということでしょうか? 2. likesLabelが関係するコードを全て書いて下さい。今のコードを見る限りでは、likesLabelが画面に影響を及ぼすことはないです。(addされていないので)
amazon_106

2019/05/21 06:48

1. 2つのコードを消すと、画像1のように表示されます。 2.likesLabelが関係するコードというのはどのようなものがあるのでしょうか。 追加したものぐらいしか見つけることができませんでした。
fuzzball

2019/05/21 06:56 編集

>>1 あぁ、上の方を見落としてました。 下の方だけ消した場合は正しく表示されたままなのでしょうか?(そうであれば、原因は上の方になりますが) >>2 どこにもaddSubViewしていないんですか?
amazon_106

2019/05/21 06:59

>>1 見にくかったです。修正しました。 原因①残し 原因②コメント => 画像 ② 原因①コメント 原因②残し => ビルドできない(Use of unresolved identifier 'likes') >>2 すいません、画像の上に追加してあると思います。
fuzzball

2019/05/21 07:13

>>1 ということは上の方が原因なので、takabosoftさんにおまかせ。 >>2 たびたび失礼。「追加したもの」の意味を勘違いしててコードが追加されていることに気付いてなかったです。
amazon_106

2019/05/21 07:20

ありがとうございました。 >>2 僕の書き方に問題がありました、次からもっと見やすく質問できるように頑張りたいと思います。
guest

回答2

0

僕の場合は、firebaseのstrageにuploadする際、valuesの名前をlikesではなく、likeにしていたことが原因でした。

投稿2019/05/21 13:09

amazon_106

総合スコア50

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

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

0

ベストアンサー

guard let likes = post?.likes else { return }

ここでreturnしてしまっているのでは?

投稿2019/05/21 02:07

takabosoft

総合スコア8356

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

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

amazon_106

2019/05/21 06:51

なるほど。すみません。初心者なもので、仮にそれが原因だとして、どのように直したらいいか教えて欲しいです。
takabosoft

2019/05/21 07:07 編集

本当にreturnしているかどうかを確認してください。仮の話だと進みませんので、一つ一つ確実なものにしていきましょう。
amazon_106

2019/05/21 07:27

大変申し訳ないのですが、returnしているかどうかの確認の仕方がわかりません。お手数ですが、確かめ方の方法を教えて頂けると助かります。
takabosoft

2019/05/21 07:29

> guard let likes = post?.likes else { print("だめです!!!");return } とでもして実行してみてください。 というか、こういったデバッグ方法を過去に誰も教えてくれなかったのですか?
takabosoft

2019/05/21 07:29

ブレークポイントを張って一行ずつ実行して確認するのもありです。
amazon_106

2019/05/21 07:49

コンソール上に だめ と出力されました。
takabosoft

2019/05/21 07:53

ではそういうことです。
takabosoft

2019/05/21 07:54

何故returnの方へ処理が行ってしまったのかを考えて検証してください。
amazon_106

2019/05/21 13:07

無事表示することができました。 自分で解決できるように導いてくれてありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問