9358


`ViewController`に`ImageView`が一つあり、ボタンを押すとローカルサーバにある画像をその`ImageView`表示させようとしているのですが、画像が表示されません。試しに`NSURL`で指定してあるURLにブラウザで飛ぶと、画像は表示されます。しかし`session.dataTaskWithURL`の`NSData`のログを取ってみたところ、ログに`<>`と表示されました。下記にコードを記します。どこが間違っているのでしょうか？どなたか分かる方がいれば教えていただきたいです。すみませんが、よろしくお願いします。

[code]

        @IBAction func tappedStartSession(sender: AnyObject) {
            self.downloadWithDataTask()
        }
    
        func downloadWithDataTask() {
            let url = NSURL(string: "http://localhost/dog.jpg")
            let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
    
            let task = session.dataTaskWithURL(url!, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) in
    
                if let d = data {
    
                    let img = UIImage(data: d)
                    dispatch_async(dispatch_get_main_queue()) { () in
                        self.imageView.image = img
                    }
                }
    
                session.invalidateAndCancel()
    
            })
    
            task.resume()
        }
    
[/code]


CC BY-SA 3.0
2015-04-20T08:02:51.727
9341
2015-04-20T23:50:51.210
5210
question
swift nsurlsession
ローカルサーバにある画像が取得できない


実機からローカルサーバにアクセスする場合。iPhone/iPadは、Wi-Fiしかアクセス経路がありませんから、ローカルサーバがWi-
Fi経由でアクセス可能な環境を用意しなければいけないでしょう。実機テストで、ローカルサーバとしても動いているMacと、実機がUSBでつながっているので、それでアクセスできてるという勘違いをなさっているのではありませんか？  
ローカルサーバには「localhost」ドメインではアクセスできません。IPアドレスを置き換えればいいと思います。

![システム環境設定](https://i.stack.imgur.com/as8YI.png)

IPアドレスは、Macのシステム環境設定＞ネットワークで、調べられます。上図を参考にしてください。上図のIPアドレスであれば、

[code]

    "http://localhost/dog.jpg"
    
[/code]

は、

[code]

    "http://10.0.1.13/dog.jpg"
    
[/code]

となります。


CC BY-SA 3.0
2015-04-20T23:50:51.210
9358
2015-04-20T23:50:51.210
7362
9341
answer