【发布时间】:2017-02-24 03:49:32
【问题描述】:
我正在尝试使用 json 结果填充 UITable。我调用了一个从服务器获取 json 并将结果存储在NSDictionary 中的函数。我希望能够使用这个集合,然后填充一个表。但是我遇到了一个问题,因为对于 func numberOfRowsInSection 我需要集合的计数,并且由于我的 json 结果在 try/catch 内的另一个函数中,我似乎无法返回该值。
这就是我在ViewDidLoad() 中调用的函数:
func getSubjects() -> NSDictionary{
let myUrl = NSURL(string: "www.mydomain.com/script.php");
let request = NSMutableURLRequest(url:myUrl as! URL)
let user_id = UserDetails[0]
request.httpMethod = "POST";
let postString = "user_id=\(user_id)";
request.httpBody = postString.data(using: String.Encoding.utf8);
let task = URLSession.shared.dataTask(with: request as URLRequest){
data, response, error in
if error != nil {
print("error=\(error)")
return
}
var err: NSError?
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
if let parseJSON = json {
let resultValue: NSDictionary = parseJSON["subjects"] as! NSDictionary
}
} catch let error as NSError {
err = error
print(err!);
}
}
task.resume();
}
如果我打印 resultValue 我得到了我需要的东西,在这个例子中是:
{
1 = (
Maths,
Lecture
);
2 = (
Science,
Lecture
);
3 = (
English,
Seminar
);
}
但令人困惑的是,我该如何返回这个值?在哪里?我将如何在表格中实现它?如果我在解析JSON 时尝试返回resultValue,则会收到unexpected non-void return in void function 的错误,如果我尝试在函数末尾返回值,则会收到unresolved identifier error
我觉得我执行不正确。我已经检查了很多关于此的教程,似乎没有人用POST JSON 填充表,所以我不知道如何返回值或正确的实现方法。任何帮助将不胜感激!
【问题讨论】:
-
与为什么在 Swift 代码中使用 Objective-C 类型无关?使用 Swift 字典而不是
NSDictionary等。 -
注意点,谢谢
标签: json swift uitableview