我正在构建一个应用程序,列出所有用户Instagram关注者。 Instagram API仅返回约50个粉丝作为JSON数组,并链接到下一个50,依此类推,直到所有粉丝都被发送。这种方法称为分页。
我要做的是以下内容
我正在使用Swift 1.2,Xcode 6.4,Alamofire最新版本,SwiftyJSON最新版本
这是我使用的代码
do {
Alamofire.request(.GET, dataURL).responseJSON { (request, response, json, error) in
print("Request Started")
if json == nil || error != nil {
let alertView = UIAlertController(title: "Error", message: "No Data found. Check your internet connection", preferredStyle: .Alert)
alertView.addAction(UIAlertAction(title: "Dismiss", style: .Default, handler: nil))
self.presentViewController(alertView, animated: true, completion: nil)
return
}else{
var jsonObject = JSON(json!)
var dataOfNextURl = jsonObject["pagination"]["next_url"].string!
print(" Data for next url :\(dataOfNextURl)")
dataURL = dataOfNextURl
}
}
}while(dataURL != "")
在控制台中我得到了无尽的“Request Started”打印(无限循环,没有启动请求并等待响应),但我没有得到print(" Data for next url :(dataOfNextURl)")
执行的。我猜Alamofire的设计目的是为了降低复杂性而在另一个线程上运行,但如果我单独发出一个没有while
循环的请求,它就会按照假设运行(在执行后面的代码之前等待响应)。
答案 0 :(得分:3)
NSUserDefaults为此目的使用registerDefaults:
方法。使用它(在application:didFinishLaunchingWithOptions:
中)。
答案 1 :(得分:1)
正如亚特所说,registerDefaults
是为此目的而创建的。
但是,如果您不想使用registerDefaults
,那么我建议您使用integerForKey
和setInteger
而不是objectForKey
。 integerForKey
默认为0.因此,如果您使用它,HighScore将默认为0,直到设置为止。