2017-01-13 2 views
0

У меня есть данные JSON.Как установить вывод JSON в UILabel в Swift 3.0?

(
     { 
     email = "[email protected]"; 
     login = ID001; 
     pw = 1234; 
    }, 
     { 
     email = "[email protected]"; 
     login = ID002; 
     pw = 12345; 
    } 
) 

Прямо сейчас, я могу напечатать только myJSON значение выхода х кода.

Мой вопрос в том, как отображать каждый JSON в UILabel _email, _login, _pw?

Кто-то сказал, что мне нужно хранить переменную и установить в UILabel, но я не знаю, как это сделать. Цените, если кто-то может мне помочь в этом.

ViewController.swift

import UIKit 
class ViewController: UIViewController { 
    @IBOutlet var _email: UILabel! 
    @IBOutlet var _login: UILabel! 
    @IBOutlet var _pw: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let url = URL(string: "http://localhost/get.php") 
     let task = URLSession.shared.dataTask(with: url!) { 
      (data, response, error) in 
      if error != nil { 
       print("Error") 
       return 
      } 
      else { 
       if let content = data { 
        do { 
         let myJSON = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 
         print(myJSON) 
        } 
        catch {} 
       } 
      } 
     } 
     task.resume() 
    } 
} 

Спасибо.

+0

Сохраните ответ в одном массиве, и из этого массива просто установите значение в метку –

+0

Анализ вашего ответа 'json' зависит от формата' myJSON'. – amagain

+0

не уверен, как сохранить его как массив и установить его в метку. Я новичок ... все еще борюсь за понимание концепции swift 3.0. Прости. – Jamilah

ответ

0

EDIT: После блока, где отпечатан myJSON, попробуйте следующее:

for eachItem in myJSON { 
if let emailParsed = eachItem["email"] as? String { 
    print(emailParsed) 
    _email.text = emailParsed 
} 
} 

Этот цикл выполняется между всеми словарями и This решение может быть полезным для вас. Пожалуйста, пройдите через это!

+0

Привет, я попробовал ваше предложение ссылки. Это дает мне ошибку «Невозможно передать значение типа« __NSArrayI »(0x10d055d88) в« NSDictionary »(0x10d056288)». – Jamilah

+0

Я пробовал ваш ответ, не работал ни – Jamilah

+0

@Jamilah вы использовали tableview для установки всех UILabel _email, _login, _pw value? –

0

Привет Пожалуйста, попробуйте это один

for i..0 < myJson.count { 
     let object = myJson[i] as AnyObject 
     if let emailParsed = myJSON["email"] as? String { 
     _email.text = emailParsed 
     }  
    } 

EDITED

for i..0 < myJson.count { 
     let object = myJson[i] as [String : AnyObject] 
     if let emailParsed = myJSON["email"] as? String { 
     _email.text = emailParsed 
     }  
    } 
+0

Спасибо, я попробовал ваш ответ. Это не сработало. .. – Jamilah

+0

Что именно вы стоите –

+0

Проблема в том, что я не могу просмотреть каждый из json-данных в UILabel. возникает ошибка «Тип AnyObject не соответствует протоколу« Sequence »» – Jamilah

0

Это просто потому, что ваш объект JSON дает массив словарь, сначала вы должны принять первый объект из массива, и после этого вы можете возьмите строку, пробивающую ключ

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    let url = URL(string: "http://localhost/get.php") 
    let task = URLSession.shared.dataTask(with: url!) 
      { 
      (data, response, error) in 
        if error != nil 
        { 
         print("Error") 
         return 
        } 
        else 
        { 
         if let content = data 
          { 
          do { 
            let myJSON = try JSONSerialization.jsonObject(with: content, options:JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 
           // print(myJSON) 
            for data in myJSON 
            { 
             let email = data.1["email"] as? String 
             _email.text = email 

            } 
           } 
           catch {} 
          } 
         } 
      } 
      task.resume() 
     } 
} 

Для опции теста вы можете использовать некоторые предварительные определенные библиотеки, такие как swiftyJSON. Чтобы получить лучший результат.

+0

Можете ли вы обновить мой код выше? спасибо – Jamilah

+0

проверить это @Jamilah –

+0

как-то я действительно получил ошибку на этой строке «для данных в myJSON». он говорит: «Тип AnyObject не соответствует протоколу« Sequence »« – Jamilah

Смежные вопросы