在服务器应用中,我有12个用户。但如果我构建软,我有12个ID,但有13个名字,13个姓氏,当然还有13个全名。但如果我退出(这意味着删除整个数据)并再次登录,一切都很好,Alamofire给了我12件物品。 API很好,它在我的代码中。
数组示例: IDS [5,12,15,16,17,18,19,22,25,28,29,30]
lastnames [,doe,wick,smith等]
所以ids很好,但是姓氏上有一个备用项目(逗号之前的逗号表示一个备用项目)。那么为什么还有一个空白字符串的额外项目?
var firstnamesOfUsers: [String]!
var lastnamesOfUsers: [String]!
var idsOfUsers: [Int]!
var namesOfUsers: [String]!
func getUsers(){
Alamofire.request(.GET, "https://\(domainText).projektove.cz/users.json", parameters: ["limit": 1000])
.responseJSON { (request, response, JSONresponse, error) in
if( error == nil){
var responseJSON = JSONresponse as NSMutableDictionary
let json = JSON(responseJSON)
var users = json["users"]
// println(users)
if users.count > 0 {
for index in 0...users.count-1 {
firstnamesOfUsers.append(users[index]["firstname"].stringValue)
lastnamesOfUsers.append(users[index]["lastname"].stringValue)
idsOfUsers.append(users[index]["id"].intValue)
namesOfUsers.append(users[index]["firstname"].stringValue + " " + users[index]["lastname"].stringValue)
}
}
}
}
}
答案 0 :(得分:0)
您的代码示例有几个问题,最重要的是您缺少@mattt已经指出的模型对象结构。你当然有机会在这里改进。下面是相同的逻辑,只是重新设计得更健壮。
用户强>
struct User {
let id: Int
let firstName: String
let lastName: String
var fullName: String { return "\(self.firstName) \(self.lastName)" }
}
<强> UserService 强>
import Alamofire
import SwiftyJSON
class UserService {
typealias GetUsersSuccessHandler = [User] -> Void
typealias GetUsersFailureHandler = (NSURLRequest?, NSHTTPURLResponse?, NSError?) -> Void
class func getUsers(#success: GetUsersSuccessHandler?, failure: GetUsersFailureHandler?) -> Request? {
let domainText = "some_random_url"
let request = Alamofire.request(.GET, "https://\(domainText).projektove.cz/users.json", parameters: ["limit": 1000])
request.validate()
request.responseJSON { request, response, jsonObject, error in
if error != nil || jsonObject == nil {
failure?(request, response, error)
return
}
let json = JSON(jsonObject!)
let jsonUsers = json["users"]
var users = [User]()
for jsonUser in jsonUsers.arrayValue {
let id = jsonUser["id"].int
let firstName = jsonUser["firstname"].string
let lastName = jsonUser["lastname"].string
if firstName != nil && lastName != nil && id != nil {
let user = User(id: id!, firstName: firstName!, lastName: lastName!)
}
}
success?(users)
}
return request
}
}
<强> SomeClass的强>
class SomeClass {
func fetchUsers() {
UserService.getUsers(
success: { users in
println("Fetched users: \(users)")
},
failure: { request, response, error in
println("Failed to fetch users: \(error)")
}
)
}
}
此代码示例编译,请随意给它一个旋转。请特别注意User
模型对象的使用以及如何在responseJSON
完成处理程序中创建它。
希望这有助于您朝着正确的方向前进。