Created
February 13, 2015 13:04
-
-
Save laiso/2da21334c639ca0ca9f7 to your computer and use it in GitHub Desktop.
ViewController.swift
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
// | |
// ViewController.swift | |
import UIKit | |
import Alamofire | |
import Realm | |
class QiitaTag: RLMObject { | |
dynamic var id = "" | |
dynamic var iconUrl = "" | |
dynamic var followersCount = 0 | |
dynamic var itemsCount = 0 | |
override class func primaryKey() -> String { | |
return "id" | |
} | |
} | |
class ViewController: UIViewController { | |
func donwload() | |
{ | |
let d = Downloader(path: "/tmp/qiitags") | |
d.download(60, endpoint: 100) | |
} | |
func addObjects() | |
{ | |
let realm = RLMRealm.defaultRealm() | |
realm.transactionWithBlock { () -> Void in | |
for i in 1...100 { | |
let path = "/tmp/qiitags/\(i).json" | |
if let data = NSData(contentsOfFile: path)? { | |
let tags = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: nil) as [[String: AnyObject]] | |
tags.map({(tag) -> Void in | |
let qtag = QiitaTag() | |
if let id = tag["id"] as? String { | |
qtag.id = id | |
} | |
if let iconUrl = tag["icon_url"] as? String { | |
qtag.iconUrl = iconUrl | |
} | |
if let itemsCount = tag["items_count"] as? Int { | |
qtag.itemsCount = itemsCount | |
} | |
if let followersCount = tag["followers_count"] as? Int { | |
qtag.followersCount = followersCount | |
} | |
realm.addOrUpdateObject(qtag) | |
}) | |
} else { | |
break | |
} | |
} | |
} | |
} | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
// self.donwload() | |
// return | |
let realm = RLMRealm.defaultRealm() | |
let all = QiitaTag.allObjects() | |
for i in 0..<all.count { | |
if let t = all[i] as? QiitaTag { | |
println(t.id) | |
} | |
} | |
println("\(all.count) objects") | |
} | |
} | |
struct Downloader { | |
var path: String | |
init(path: String){ | |
self.path = path | |
} | |
func download(start: Int, endpoint: Int) -> Void { | |
if start > endpoint { | |
return | |
} | |
let p = String(start) | |
Alamofire | |
.request(.GET, "https://qiita.com/api/v2/tags", parameters: ["page": p]) | |
.response { (request, response, data, error) in | |
assert(error == nil) | |
let json = NSString(data: data as NSData, encoding: NSUTF8StringEncoding) | |
let path = "\(self.path)/\(p).json" | |
let ret = json?.writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding, error: nil) as Bool! | |
assert(ret) | |
NSThread.sleepForTimeInterval(1) | |
self.download(start+1, endpoint: endpoint) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment