Используйте Alomofire для получения данных с сервера в Xcode 9 - PullRequest
0 голосов
/ 10 октября 2018

Я новичок в программировании на 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 на стороне сервера.

Я действительно сожалею о своем длинном и неоднозначном вопросе!спасибо за любые предложения.

1 Ответ

0 голосов
/ 10 октября 2018

Сначала создайте файл 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))")
        }
...