ローカルのJSONを読み込んでUITableViewで表示
iOSのプログラムをしてみました。
Xcode9のplaygroundでローカルのJSONファイルを読み込んでUITableViewで表示してみました。
以下のようなJSONファイルを使いました。
[
{
"id": 1,
"name": "Alice",
},
{
"id": 2,
"name": "Bob",
}
]
このファイルをplaygroundのResoucesフォルダに追加します。
JSONのデコードはCodableを使いました。
JSONの1エントリをdecodeするCodableの構造体を定義して、JSONDecoder().decode()の引数に、その構造体のArray [User].self
を指定します。
とりあえず、これだけでJSONがデコードできます。
以下XcodeのPlaygroundで動くプログラムです。
import UIKit
import PlaygroundSupport
struct User: Codable {
var id: Int
var name: String
}
class TableViewController : UITableViewController {
var users: [User]?
override func viewDidLoad() {
super.viewDidLoad()
loadJsonFile()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.users?.count ?? 0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
cell.textLabel?.text = "\(self.users?[indexPath.row].name ?? "null")"
return cell
}
func loadJsonFile() {
guard let path = Bundle.main.path(forResource: "users", ofType: "json") else { return }
let url = URL(fileURLWithPath: path)
do {
let data = try Data(contentsOf: url)
let users = try JSONDecoder().decode([User].self, from: data)
self.users = users
} catch {
print(error)
}
}
}
let tableViewController = TableViewController(style: .plain)
PlaygroundPage.current.liveView = tableViewController
実行するとこんな感じです。
Author And Source
この問題について(ローカルのJSONを読み込んでUITableViewで表示), 我々は、より多くの情報をここで見つけました https://qiita.com/eggman/items/07f13940b82b869aec55著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .