WebサービスをUITableViewControllerに読み込もうとすると、最初のレコードがシミュレータに返されます。だから、誰かがコードを見て正しい経路を教えてくれることを期待している。究極の目標はUITableViewCellに取り込むことですので、フォーマットはうまく行えますが、すべてのレコードを取得するだけです。Swift 3.0とWebサービス
ここには、返される部分的なjsonファイルのビューがあります。
{
"Count":11518,
"Result":[
{
"cuName": "#1",
"charter_Num":
"16328","City":
"Jonesboro",
"State_id": "GA",
"cuName_location": "#1 - Jonesboro, GA"
},
{
"cuName": "@lantec Financial",
"charter_Num": "7965",
"City": "Virginia Beach",
"State_id": "VA",
"cuName_location": "@lantec Financial - Virginia Beach, VA"
}]
}
ここでは、json Webサービスを読み込み、解析してテーブルに挿入しようとするコードを示します。
func get_data_from_url(_ link:String)
{
let url:URL = URL(string: link)!
let session = URLSession.shared
let request = NSMutableURLRequest(url: url)
request.httpMethod = "GET"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
let task = session.dataTask(with: request as URLRequest, completionHandler: {
(
data, response, error) in
guard let _:Data = data, let _:URLResponse = response , error == nil else {
return
}
self.extract_json(data!)
})
task.resume()
}
func extract_json(_ data: Data)
{
let json: Any?
do
{
json = try JSONSerialization.jsonObject(with: data, options: [])
}
catch
{
return
}
//Commented out the following lines because it doesn't return anything when using the modified code that works
//
// guard let data_list = json as? NSArray else
// {
// return
// }
//This code works but only gives me the 1st record back
if let cu_list = try? json as? [String:Any],
let result = cu_list?["Result"] as? [[String:Any]],
let charter_num = result[0]["charter_Num"] as? String,
let value = result[0]["cuName_location"] as? String, result.count > 0 {
TableData.append(value + " (" + charter_num + ")")
} else {
print("bad json - do some recovery")
}
DispatchQueue.main.async(execute: {self.do_table_refresh()})
}
提案:(1)Swiftのメソッド名と変数名に 'snake_case'を使用しないでください。代わりに、あなたはより低い 'camelCase'を使うべきです。 (2)型が簡単に推測できる場合は、型を指定する必要はありません。 (3)中括弧は、新しい行に置かれないステートメントまたは宣言とインラインでなければなりません。 (4) '!' forceはオプションのラップを解除します。これは慎重に使用する必要があります。たとえば、 'nil'値を持つオプションをアンラップすると、実行時にアプリケーションがクラッシュします。 –
@EricAya、その情報をありがとうございます。私は初心者のSwift開発者なので、何か作業をしてそのサイトを見つけようとしていました。 – AETechAdm
@ RyanH。コードを改善し、うまくいけば良いように改善するための素晴らしいフィードバックがあります。ありがとうございました – AETechAdm