Swiftをコマンドラインで実行してWebAPIからjsonを取得する


## 概要

このコードを参考に、一部分をコマンドラインで実行できるようにした。
[SwiftでWebAPIアプリを作った時の要点 - Qiita](http://qiita.com/himara2/items/165393baac0bd1705bfe)

ターミナルからswiftをREPLで起動させてコードをコピペすると、TiqavのWebAPIをたたいてjsonを取得する。

## gif

![swift_repl.gif](https://qiita-image-store.s3.amazonaws.com/0/32750/954e62c0-57df-a4f3-6ad1-f67a020fee40.gif "swift_repl.gif")


## コマンドラインからSwiftを実行する方法

```console
$ sudo xcode-select -switch /Applications/Xcode6-Beta.app/Contents/Developer
$ xcrun swift 
```

[ios - How can I use swift in Terminal? - Stack Overflow](http://stackoverflow.com/questions/24011120/how-can-i-use-swift-in-terminal)


## 実行するコード

```swift
import Foundation
// Thanks to tiqav api! ( http://dev.tiqav.com/ )
var request = NSURLRequest(URL: NSURL(string: "http://api.tiqav.com/search/random.json"))
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
var json: NSArray = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.AllowFragments, error: nil) as NSArray
for item: NSDictionary! in json {
  println(item.objectForKey("source_url"))
}
```

## 実行結果

```console
$ sudo xcode-select -switch /Applications/Xcode6-Beta.app/Contents/Developer
$ xcrun swift
Welcome to Swift!  Type :help for assistance.
  1> import Foundation
  2> // Thanks to tiqav api! ( http://dev.tiqav.com/ )
  3> var request = NSURLRequest(URL: NSURL(string: "http://api.tiqav.com/search/random.json"))
request: NSURLRequest = {}
  4> var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
data: NSData! = 3411 bytes
  5> var json: NSArray = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.AllowFragments, error: nil) as NSArray
json: __NSArrayI = @"30 objects" {
  [0] =
  [1] =
  [2] =
  [3] =
  [4] =
  [5] =
  [6] =
  [7] =
  [8] =
  [9] =
  [10] =
  [11] =
  [12] =
  [13] =
  [14] =
  [15] =
  [16] =
  [17] =
  [18] =
  [19] =
  [20] =
  [21] =
  [22] =
  [23] =
  [24] =
  [25] =
  [26] =
  [27] =
  [28] =
  [29] =
}
  6> for item: NSDictionary! in json {
  7.       println(item.objectForKey("source_url"))
  8. }   
http://apr.2chan.net/may/b/src/1259575702179.jpg
http://feb.2chan.net/jun/b/src/1259078675620.jpg
http://aug.2chan.net/jun/b/src/1288702377863.jpg
http://sep.2chan.net/jun/b/src/1331959816500.jpg
http://jun.2chan.net:81/b/src/1257440956875.jpg
http://apr.2chan.net/jun/b/src/1289270827260.jpg
http://sep.2chan.net/jun/b/src/1287737625271.jpg
http://feb.2chan.net/jun/b/src/1287740142921.jpg
http://jan.2chan.net/jun/b/src/1287221271145.png
http://mar.2chan.net/jun/b/src/1333033557075.jpg
http://apr.2chan.net/jun/b/src/1260208494697.jpg
http://jan.2chan.net/jun/b/src/1287570536309.jpg
http://aug.2chan.net/jun/b/src/1289782701602.png
http://jan.2chan.net/jun/b/src/1357143159406.jpg
http://apr.2chan.net/may/b/src/1259689152133.jpg
http://dec.2chan.net:81/b/src/1259397315084.jpg
http://aug.2chan.net/jun/b/src/1289740533304.jpg
http://jan.2chan.net/jun/b/src/1299366180429.jpg
http://apr.2chan.net/may/b/src/1259008684768.jpg
http://aug.2chan.net/jun/b/src/1338397857881.jpg
http://apr.2chan.net/jun/b/src/1299242054894.jpg
http://jan.2chan.net/jun/b/src/1260334891825.jpg
http://feb.2chan.net/jun/b/src/1299191757914.jpg
http://feb.2chan.net/jun/b/src/1258769251502.jpg
http://jan.2chan.net/jun/b/src/1287214040790.jpg
http://apr.2chan.net/jun/b/src/1332569014437.jpg
http://sep.2chan.net/jun/b/src/1288699390255.gif
http://apr.2chan.net/jun/b/src/1338451261333.jpg
http://apr.2chan.net/may/b/src/1258776572369.jpg
http://feb.2chan.net/jun/b/src/1257779417222.jpg
  9> 
```