Skip to content

Instantly share code, notes, and snippets.

@gitbricho
Last active January 11, 2016 04:03
Show Gist options
  • Save gitbricho/01d60cd6b0d41104cb5a to your computer and use it in GitHub Desktop.
Save gitbricho/01d60cd6b0d41104cb5a to your computer and use it in GitHub Desktop.
IOSSample
import UIKit
class MovieRepo {
// MARK: プロパティ
var movies = [MovieT]()
// MARK: イニシャライザ
init() {
let photo1 = UIImage(named: "movie01")!
let movie1 = MovieT(name: "風と共に去りぬ", photo: photo1, rating: 4)!
let photo2 = UIImage(named: "movie02")!
let movie2 = MovieT(name: "或る夜の出来事", photo: photo2, rating: 5)!
let photo3 = UIImage(named: "movie03")!
let movie3 = MovieT(name: "シェーン", photo: photo3, rating: 3)!
movies += [movie1, movie2, movie3]
}
// MARK: メソッド
func findAll() -> [MovieT] {
print("findAll")
return movies
}
}
import UIKit
class ProductRepo {
// MARK: プロパティ
var products: [Product] = []
var product: Product
// MARK: イニシャライザ
init() {
self.product = Product(id: -1, name: "", price: 0, inStock: "x", comments: [])
}
// MARK: メソッド
/** 全件取得 */
func findAll() {
// REST サービスからデータを取得するまでブロック
let SEMAPHORE: dispatch_semaphore_t = dispatch_semaphore_create(0)
let REST_URL = "http://localhost:9901/bootRestDb/products"
guard let url = NSURL(string: REST_URL) else {
print("Error: URLを作成できません")
return
}
let urlRequest = NSURLRequest(URL: url)
let session = NSURLSession(configuration:
NSURLSessionConfiguration.defaultSessionConfiguration())
let task = session.dataTaskWithRequest(urlRequest,
completionHandler: { (data, response, error) in
// データが nil かチェック
guard let responseData = data else {
print("Error: データを取得できませんでした")
return
}
// データが取得できたら JSON として解析
do {
let productsDic = try NSJSONSerialization.JSONObjectWithData(responseData,
options: []) as! NSDictionary
print("取得した製品は: " + productsDic.description)
let json = JSON(productsDic)
let prods = JSON(json["_embedded"]["products"])
let len = prods.length
print("len=\(len)")
for var i=0; i<len; i++ {
let pName = prods[i]["name"].asString!
let pPrice = prods[i]["price"].asInt!
let pInStock = prods[i]["inStock"].asString!
let p_link = prods[i]["_links"]["self"]["href"].asString!
let pId = Int(p_link.componentsSeparatedByString("products/")[1])
print("\(pId!), \(pName), \(pPrice), \(pInStock)")
var pComments:[Comment] = []
for var j=0; j < prods[i]["comments"].length; j++ {
let cId = j+1
let cText = prods[i]["comments"][j]["text"].asString!
print(" \(cId), \(cText)")
pComments.append(Comment(id: cId, text: cText))
}
let product = Product(id: pId!, name: pName, price: pPrice,
inStock: pInStock, comments: pComments)
self.products.append(product)
}
// ブロックを解除
dispatch_semaphore_signal(SEMAPHORE)
} catch {
print("データを JSON に変換できませんでした")
return
}
})
task.resume()
// ブロック解除まで待つ:タイムアウト=5秒
dispatch_semaphore_wait(SEMAPHORE, dispatch_time(DISPATCH_TIME_NOW, 5*Int64(NSEC_PER_SEC)))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment