【问题标题】:Use Alomofire for get data from server in Xcode 9在 Xcode 9 中使用 Alomofire 从服务器获取数据
【发布时间】:2019-03-14 22:55:51
【问题描述】:

我是 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。

对于我的冗长而模棱两可的问题,我真的很抱歉! 感谢您的任何建议。

【问题讨论】:

    标签: json xcode swift3 alamofire


    【解决方案1】:

    首先创建 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))")
            }
    

    【讨论】:

    • 什么是购物车?!我的意思是它什么时候填充现在使用的?
    • @Mahya 我不明白你能详细解释一下吗?
    • 我的意思是,当数据转换为 [[String: AnyObject]] 时,结果为 nil,因此 if 语句为 nil 并且不执行其余代码!
    • 尝试打印(回复)并告诉我你得到了什么?
    • 这是响应:[{"Id":1,"Name":"Mary","TelNumber":"09111111"},{"Id":2,"Name":"Sarah ","TelNumber":"09222222"}, {"Id":3,"Name":"Ben","TelNumber":"09333333"}] 我认为我的问题是响应的类型是字符串,我不是当然我只是猜测!
    猜你喜欢
    • 2021-05-10
    • 2019-09-08
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    相关资源
    最近更新 更多