在 Xcode 9 中使用 Alomofire 从服务器获取数据
Use Alomofire for get data from server in Xcode 9
我是 iOS 编程的初学者,但我在 android 工作,所以现在我在 iOS 遇到了问题。
我知道我的问题很笼统,但我真的需要你的帮助!
在 android 中连接到服务器,我们如下所示:
Call<String> myList = service.Contact_List("");
myList.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
try{
ArrayList<Contact> contactArrayList = new ArrayList<>();
JSONArray jsonArray = new JSONArray(response.body());
for(int i=0 ; i<jsonArray.length() ; i++)
contactArrayList.add(gson.fromJson(jsonArray.getJSONObject(i).toString(), Contact.class));
}catch (Exception e) {
Log.d("Catch","Error")
}finally {
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.d("Failure","Error")
}
});
在 xcode 中,我喜欢下面的内容:
let url = URL(string: "http://api.example.com/Contact-List")
Alamofire.request(url!, method: HTTPMethod.post, parameters: param, encoding: URLEncoding.default, headers: nil).responseJSON { (response) in
print("response.request")
print(response.request as Any) // original URL request
print("response.response")
print(response.response as Any) // URL response
print("response.result.value")
}
我的结果是这样的:
[{"Id":1,"Name":"Mary","TelNumber":"09111111"},{"Id":2,"Name":"Sarah","TelNumber":"09222222"},
{"Id":3,"Name":"Ben","TelNumber":"09333333"}]
现在我的问题是,我怎样才能喜欢 Xcode(swift 3 ):
中的这段代码
for(int i=0 ; i<jsonArray.length() ; i++)
contactArrayList.add(gson.fromJson(jsonArray.getJSONObject(i).toString(), Contact.class));
此外,我在服务器端使用ASP.net。
我真的很抱歉我的问题又长又模棱两可!
感谢您的任何建议。
首先创建 NSObject swift 文件:
然后添加代码
class demo {
var ID: String
var Name: String
init(ID: String, Name: String) {
self.ID = ID
self.Name = Name
}
}
这样试试:
let data = response.result.value
if data != nil {
self.presentWindow.hideToastActivity()
if let response = data as? [[String: AnyObject]] {
for detail_data in response {
let Id = detail_data["Id"] as? String ?? ""
let Name = detail_data["Name"] as? String ?? ""
let demoObj = demo(ID: ID, Name: Name
self.demoObjects.append(demoObj)
}
}
}
更新答案
用于将字符串响应转换为 JSON
示例代码如下所示。不要忘记处理展开的东西
let data1 = "[{\"Id\": 1,\"Name\": \"Mary\",\"TelNumber\": \"09111111\"},{\"Id\": 2,\"Name\": \"Sarah\",\"TelNumber\": \"09222222\"}]" //your JSON From API Response
let data = data1.data(using: .utf8)
do {
let array = try JSONSerialization.jsonObject(with: data!) as! [[String : Any]]
for detail_data in array {
let Id = detail_data["Id"] as? Int ?? 00
let Name = detail_data["Name"] as? String ?? ""
print("Id:",Id)
print("Name:",Name)
print("****")
}
} catch {
print("Exception occured \(error))")
}
我是 iOS 编程的初学者,但我在 android 工作,所以现在我在 iOS 遇到了问题。 我知道我的问题很笼统,但我真的需要你的帮助! 在 android 中连接到服务器,我们如下所示:
Call<String> myList = service.Contact_List("");
myList.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
try{
ArrayList<Contact> contactArrayList = new ArrayList<>();
JSONArray jsonArray = new JSONArray(response.body());
for(int i=0 ; i<jsonArray.length() ; i++)
contactArrayList.add(gson.fromJson(jsonArray.getJSONObject(i).toString(), Contact.class));
}catch (Exception e) {
Log.d("Catch","Error")
}finally {
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.d("Failure","Error")
}
});
在 xcode 中,我喜欢下面的内容:
let url = URL(string: "http://api.example.com/Contact-List")
Alamofire.request(url!, method: HTTPMethod.post, parameters: param, encoding: URLEncoding.default, headers: nil).responseJSON { (response) in
print("response.request")
print(response.request as Any) // original URL request
print("response.response")
print(response.response as Any) // URL response
print("response.result.value")
}
我的结果是这样的:
[{"Id":1,"Name":"Mary","TelNumber":"09111111"},{"Id":2,"Name":"Sarah","TelNumber":"09222222"},
{"Id":3,"Name":"Ben","TelNumber":"09333333"}]
现在我的问题是,我怎样才能喜欢 Xcode(swift 3 ):
中的这段代码for(int i=0 ; i<jsonArray.length() ; i++)
contactArrayList.add(gson.fromJson(jsonArray.getJSONObject(i).toString(), Contact.class));
此外,我在服务器端使用ASP.net。
我真的很抱歉我的问题又长又模棱两可! 感谢您的任何建议。
首先创建 NSObject swift 文件:
然后添加代码
class demo {
var ID: String
var Name: String
init(ID: String, Name: String) {
self.ID = ID
self.Name = Name
}
}
这样试试:
let data = response.result.value
if data != nil {
self.presentWindow.hideToastActivity()
if let response = data as? [[String: AnyObject]] {
for detail_data in response {
let Id = detail_data["Id"] as? String ?? ""
let Name = detail_data["Name"] as? String ?? ""
let demoObj = demo(ID: ID, Name: Name
self.demoObjects.append(demoObj)
}
}
}
更新答案
用于将字符串响应转换为 JSON
示例代码如下所示。不要忘记处理展开的东西
let data1 = "[{\"Id\": 1,\"Name\": \"Mary\",\"TelNumber\": \"09111111\"},{\"Id\": 2,\"Name\": \"Sarah\",\"TelNumber\": \"09222222\"}]" //your JSON From API Response
let data = data1.data(using: .utf8)
do {
let array = try JSONSerialization.jsonObject(with: data!) as! [[String : Any]]
for detail_data in array {
let Id = detail_data["Id"] as? Int ?? 00
let Name = detail_data["Name"] as? String ?? ""
print("Id:",Id)
print("Name:",Name)
print("****")
}
} catch {
print("Exception occured \(error))")
}