Я пытался извлечь данные из одной из моих баз данных для отображения в мобильном приложении, которое я делаю с использованием Swift 2.1 и XCode. У меня есть база данных mysql, которая настроена, и скрипт php, запущенный с моего сервера, который отображает JSON-кодированные данные из этой базы данных.
Мое приложение swift может отправлять данные в сценарий PHP и отправлять данные в базу данных, но я не могу получить данные из сценария PHP для отображения в приложении. Я попробовал большинство методов, но они не работают для последней версии swift.
Вот мой код:
func dataOfJson(url: String) -> NSArray {
let data = NSData(contentsOfURL: NSURL(string: url)!)
let result: NSArray = []
do {
let json = try (NSJSONSerialization.JSONObjectWithData(data!, options: [NSJSONReadingOptions.MutableContainers, NSJSONReadingOptions.AllowFragments]) as? NSDictionary)
if let parseJSON = json {
let resultValue = parseJSON["id"] as? String?
print(resultValue)
}
} catch let error as NSError {
print(error.localizedDescription)
}
return result
}
И результат моего PHP-файла выглядит так:
[{"id":"alex"},{"id":"jeff"},{"id":"jack"}]
Как я могу получить эти данные JSON и сохранить их в быстрых переменных?
Попробуй это
func dataOfJson(url: String) -> Array<Dictionary<String,String>>? {
let data = NSData(contentsOfURL: NSURL(string: url)!)
do {
let jsonArray = try NSJSONSerialization.JSONObjectWithData(data!, options: [NSJSONReadingOptions.MutableContainers, NSJSONReadingOptions.AllowFragments]) as? Array<Dictionary<String, String>>
print("json := \(jsonArray)")
return jsonArray;
} catch let error as NSError {
print(error.localizedDescription)
return nil;
}
}
Я проверил с кодом ниже, работает нормально.
let string = "[{\"id\":\"alex\"},{\"id\":\"jeff\"},{\"id\":\"jack\"}]";
let data = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding)
let jsonArray = try NSJSONSerialization.JSONObjectWithData(data!, options: [NSJSONReadingOptions.MutableContainers, NSJSONReadingOptions.AllowFragments]) as? Array<Dictionary<String, String>>
print("json := \(jsonArray)")
for object in jsonArray! {
print("id := \(object["id"])");
}
Других решений пока нет …