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

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

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

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

Swift

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

Q&A

解決済

2回答

1414閲覧

プレイグランドでは速いのに組み込むと遅い

apple2

総合スコア37

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/03/20 03:16

"http://10.0.1.4:3000/ip"にアクセスするとIPアドレスを返してくるデバイスがありまして
ネットの情報を頼りに以下のようなコードを書いて見ましたが
プレイグランドでは問題なく動くのですが、いざ組み込むと遅くて30秒以上待たされたり、エラーになったりします
プレイグランドと組み込んだ時と何が違うのでしょう?

Swift3

1import Foundation 2import PlaygroundSupport 3 4PlaygroundPage.current.needsIndefiniteExecution = true 5 6let myurl = URL(string: "http://10.0.1.4:3000/ip") 7let request = URLRequest(url:myurl!) 8 9let task = URLSession.shared.dataTask(with: request) { (data, response, error) in 10 if let jsonData = data { 11 do { 12 let json = try JSONSerialization.jsonObject(with: jsonData, options: .allowFragments) 13 if let str = String(String(describing: json)) { 14 print(str) 15 }else{ 16 print("nil") 17 } 18 } catch { 19 print( "http error") 20 } 21 }else{ 22 print("no data") 23 } 24} 25 26task.resume()

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

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

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

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

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

guest

回答2

0

組み込んだ端末が10.0.1.4のホストと同じネットワークに所属しておらず10.0.1.4まで辿り着けていないのでは?
(10.0.1.4はプライベートIPアドレスですよね?)

お使いのmacではwifi接続していると仮定して、
端末側もwifi接続してmacと同じネットワークに入ってみてはいかがでしょうか?

投稿2017/03/20 03:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

apple2

2017/03/20 05:14

ありがとうございます、同じネットワーク内にいて、プレイグランドでは問題なく動作しています
退会済みユーザー

退会済みユーザー

2017/03/20 05:18 編集

なるほど。失礼しました。 いくつか質問よろしいでしょうか? 1.組み込む、とありますが、iPhone実機にて動作確認しているということでよいでしょうか? 2.組み込んだコードを掲載いただけますか? 3.エラーの内容を掲載いただけますか?
退会済みユーザー

退会済みユーザー

2017/03/20 05:19

あ、入れ違いで解決できたようですね。よかったです。
apple2

2017/03/20 07:01

すみません、ありがとうございます
apple2

2017/03/20 07:18

どうやら、コードの問題ではなく、DNSの問題のようです 10.0.1.4:3000/ip はアクセス可能ですが device-name.local:3000/ip はプレイグランドでは通るけど組み込むと通らないことがわかりました 名前解決は何か必要なのでしょうか?
退会済みユーザー

退会済みユーザー

2017/03/20 09:05

10.0.1.4はローカルにある端末でしょうか? また、playgroundを動かしたmacとは別の端末でしょうか?
guest

0

自己解決

迂回解決ですがAlamofireを導入し

Alamofire.request( "http://10.0.1.4:3000/ip").responseJSON { (response) in
print(response.result.value)
}
っとしたところ、一応目的のことはできました

投稿2017/03/20 05:17

apple2

総合スコア37

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問