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

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

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

CocoaはMac OS X用のアプリケーションを構築する為の主要なフレームワークのひとつです。

Xcode

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

Q&A

解決済

2回答

1718閲覧

SwiftUIでWebAPIからデータを取得して表示する時にiOSだと問題ないが、Macだとエラーが発生する

haduki

総合スコア7

Cocoa

CocoaはMac OS X用のアプリケーションを構築する為の主要なフレームワークのひとつです。

Xcode

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

0グッド

0クリップ

投稿2020/04/15 08:39

前提・実現したいこと

WebAPIからデータを取得したいのですが、
iOSでは以下コードで問題なく表示されるのですが、MacのAppで実施したところ、エラーが発生しました。
設定等で解決可能なの問題でしょうか?それともコード的にMacでは通らない物なのでしょうか?

該当のソースコード

Swift

1import Foundation 2import Combine 3import SwiftUI 4 5class FollowingUserStore: ObservableObject { 6 @Published var users: [User] = [] 7 8 init() { 9 load() 10 } 11 12 func load() { 13 let url = URL(string: "https://api.github.com/users/maoyama/following")! 14 URLSession.shared.dataTask(with: url) { data, response, error in 15 DispatchQueue.main.async { 16 self.users = try! JSONDecoder().decode([User].self, from: data!)//① 17 } 18 }.resume() 19 } 20} 21 22struct User: Decodable, Identifiable { 23 var id: Int 24 var login: String 25} 26 27struct ContentView: View { 28 @ObservedObject var store = FollowingUserStore() 29 30 var body: some View { 31 List(store.users) { (user) in 32 UserRow(user: user) 33 } 34 } 35} 36 37struct UserRow: View { 38 var user: User 39 40 var body: some View { 41 Text(user.login) 42 } 43} 44

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

①コメントの箇所で、下記エラーが発生します。

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

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

Xcode 11.4
Mac OS 10.15
Swift 5.2

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

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

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

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

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

guest

回答2

0

ベストアンサー

https://www.poly-rhythm.com/hostname-could-not-be-found/
で説明されているように、App SandboxのOutgoing Connections (client)をチェックすれば正常にデータ取得できるようになると思います。

投稿2020/04/15 22:20

TakeOne

総合スコア6299

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

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

haduki

2020/04/16 00:01

ありがとうございます。 iOSとは異なり、設定が必要だったのですね。 解決いたしました。
guest

0

try!で処理せずに、do - try - catchでエラー処理を行い、エラーメッセージを表示すると

A server with the specified hostname could not be found.

というエラーメッセージが出てくるかもしれません。

しかし、試しにコード内に記述してあるURLにアクセスしてみると、正常にJSONレスポンスが得られます。
ホスト名が見つからないわけではなさそうです。

そこで、再度上記のエラーメッセージをキーワードに検索してみると、どうもいくつかの設定が必要なようです(iOSにおける ATS, App Transport Securityみたいなもの?)

私の環境だとプロビジョニングの設定などが必要なのでこれ以上追ってはいませんが、上記の内容を参考二調査されてみてはいかがでしょうか。

投稿2020/04/15 13:48

TsukubaDepot

総合スコア5086

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問