Last active
January 11, 2016 04:03
-
-
Save gitbricho/01d60cd6b0d41104cb5a to your computer and use it in GitHub Desktop.
IOSSample
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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