我正在尝试从 MYSQL 数据库读取一行并将其转换为应用程序中的字符串数组。
我的 PHP 代码生成以下 JSON 输出:
[{
"Kategorie": "Externals"
}, {
"Kategorie": "Home"
}, {
"Kategorie": "Lehrer"
}, {
"Kategorie": "Oeffnungszeiten"
}, {
"Kategorie": "Orientierung"
}, {
"Kategorie": "Schulleitung"
}]
我的应用程序中的函数(使用 Xcode 8 和 Swift 3):
func get()
{
do{
let dburl = URL(string: "http://127.0.0.1/index.php")
let dbdata = try Data(contentsOf: dburl!)
let json = try JSONSerialization.jsonObject(with: dbdata, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String:AnyObject]
if let arrJSON = json["Kategorie"]
{
for indexx in 0...arrJSON.count-1
{
let aObject = arrJSON[indexx]
TableArray.append(aObject as! String)
}
}
}
catch let error as NSError{
print("Failed to load: \(error.localizedDescription)")
}
}
它没有向我显示任何错误或类似的内容。当我模拟它时,应用程序卡住在我尝试序列化的行。
显而易见的问题是:这里出了什么问题?
最佳答案
问题出在这一行:
let json = try JSONSerialization.jsonObject(with: dbdata, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String:AnyObject]
您的数据是一个[String:Any]
字典数组。但您将其转换为 [String:AnyObject]
将该行更改为:
let json = try JSONSerialization.jsonObject(with: dbdata, options: JSONSerialization.ReadingOptions.mutableContainers) as! [[String:Any]]
当然,之后您还必须修改其余的数据解析代码,因为您需要循环遍历数组以从每个字典实例中获取值。
关于ios - 从 MySQL 数据库导入 iOS 应用程序中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43016987/