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

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

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

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Swift

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

Q&A

解決済

1回答

1168閲覧

Realmで画像表示したい

退会済みユーザー

退会済みユーザー

総合スコア0

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Swift

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

0グッド

0クリップ

投稿2020/07/04 13:08

編集2021/04/07 01:10

Realmの初期データを作り、最初はプロフィール画像がないためアセットの画像を表示し、プロフィール設定した後には画像をUIImageに変換し表示しようと考えました。ビルドすると何もエラーは出てこないのですが、いざ実行すると、アンラップしろと出てきました。UserクラスではprofileImageはnilとし、Objectを継承するとオプショナルなのでアンラップする必要はないはずです。
なんだか矛盾しているのでよく分からない状態でございます。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/07/04 13:52

コード読んでない段階で、素朴な疑問なんだけど、これ何がnilなの? (user or profileImage)
退会済みユーザー

退会済みユーザー

2020/07/04 13:53

UserのprofileImageです。
退会済みユーザー

退会済みユーザー

2020/07/04 16:13 編集

申し訳ないんだけど、プリントデバッグしてコンソールの表示を教えてくれませんか? 赤くなってる上の行に print(“user: \(user as Any)”)
退会済みユーザー

退会済みユーザー

2020/07/04 23:20 編集

> オプショナルなのでアンラップする必要はないはず 理解されてこう書いてますか?書き間違いですか?
退会済みユーザー

退会済みユーザー

2020/07/04 14:18

やってみました。 initUserData: Results<User> <0x7ffd72d08ee0> ( [0] User { id = 0; fullname = fullname; username = anonymous; profileText = Let's introduce yourself!; profileImage = <(null) — 0 total bytes>; } ) 2020-07-04 23:17:18.716860+0900 TweetMemo[1526:85094] [Storyboard] Unknown class _TtC9TweetMemo14ViewController in Interface Builder file. 2020-07-04 23:17:18.723955+0900 TweetMemo[1526:85387] Version 5.2.0 of Realm is now available: https://github.com/realm/realm-cocoa/blob/v5.2.0/CHANGELOG.md file:///Users/Newton/Library/Developer/CoreSimulator/Devices/6C1A834E-A413-4B6E-BFAF-E7F07321B68F/data/Containers/Data/Application/F205D7BA-D48E-47D9-94FF-4D220461EAD9/Documents/default.realm user: nil Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value: file /Users/Newton/Documents/App/TweetMemo/TweetMemo/Controller/FeedController.swift, line 83 2020-07-04 23:17:18.899772+0900 TweetMemo[1526:85094] Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value: file /Users/Newton/Documents/App/TweetMemo/TweetMemo/Controller/FeedController.swift, line 83
退会済みユーザー

退会済みユーザー

2020/07/04 14:19

user: nilってかいてあるよ。
退会済みユーザー

退会済みユーザー

2020/07/04 14:21

例えると、購入していないパソコンのメモリを交換しようとしてる状態なんだけど、まだ購入していない手元にないパソコンのメモリを自分の手で交換できると思う?
退会済みユーザー

退会済みユーザー

2020/07/04 22:02 編集

まとめとくね。 私が聞いているのは、nilなのは(user or profileImage)のどっち? あなたがnilだと言っているのはUserのprofileImage この時点で話が噛み合ってなかったんだけど、 あなたが触ってるのはuserなのね。 だからprintしてもらったんだけど、Xcodeがuserはnilですって言ってるわけね。 でメモリ交換の例えになるわけ。
退会済みユーザー

退会済みユーザー

2020/07/05 05:24

guard let でアンラップしたらビルドには成功できたのですが、今度は何も表示しなくなりボタンも無効になってしまいました。 func configureLeftBarButton(){ guard let user = user else { return } if user.profileImage != nil { print("user: \(user as Any)") print("userProfileImage: \(user.profileImage as Any)") let pngData = profileImage?.toPNGData() let jpegData = profileImage?.toJPEGData() let profileImageView = UIImageView() user.profileImage = pngData ?? jpegData profileImageView.image = UIImage(data: user.profileImage!) profileImageView.setDimensions(width: 32, height: 32) profileImageView.layer.cornerRadius = 32 / 2 profileImageView.layer.masksToBounds = true profileImageView.isUserInteractionEnabled = true let tap = UITapGestureRecognizer(target: self, action: #selector(handleProfileImageTap)) profileImageView.addGestureRecognizer(tap) navigationItem.leftBarButtonItem = UIBarButtonItem(customView: profileImageView) } else { let profileImageView = UIImageView() profileImageView.image = UIImage(named: "placeholderImg") profileImageView.setDimensions(width: 32, height: 32) profileImageView.layer.cornerRadius = 32 / 2 profileImageView.layer.masksToBounds = true profileImageView.isUserInteractionEnabled = true let tap = UITapGestureRecognizer(target: self, action: #selector(handleProfileImageTap)) profileImageView.addGestureRecognizer(tap) navigationItem.leftBarButtonItem = UIBarButtonItem(customView: profileImageView) } }
退会済みユーザー

退会済みユーザー

2020/07/05 05:29

…。当然な結果と思いませんか? 購入してないパソコンを箱から出せますか?
退会済みユーザー

退会済みユーザー

2021/04/07 01:10

基礎を見直すと解決できます。
guest

回答1

0

ベストアンサー

基礎を見直すと解決できます。

投稿2021/04/07 01:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問