[Swift3.0] API에서 JSON 데이터를 가져와 [초보자용] 표시
똑같은 사람들이 많을 것 같아서 이 강좌를 썼어요.
그럼에도 불구하고 이번에는 swift에 대한 설명이 없다.
그리고storyboard를 사용하고 싶지 않아서 사용하지 않았어요.(TableView만...)
완성되면 이런 느낌이야.
1. 프로젝트 만들기
프로젝트를 만들기 전에 작업할 폴더를 만듭니다.
이번 Docoments(파일) 바로 아래에 swift 폴더가 만들어집니다.
Documents
└ swift
xcode를 시작한 후 [File]→[New]→[Project]를 선택합니다.선택한 후 Project를 작성합니다.
템플릿Single View Application 을 선택합니다.
이번에는'Awesome Project'라는 이름으로 프로젝트를 제작했다.
이 근처는 마음대로 하세요.
2. Package Manager 설치
그런 다음 Package Manager를 설치합니다.
세 개의 후보가 있는 매크로 패키지 관리자입니다.
Carrthage 설치는 Homebrew를 사용하기 때문에 미리 설치/업데이트하십시오.
설치하다.
brew install carthage
3. 라이브러리 설치
terminal로 디렉터리로 이동합니다.
cd Documents/swift/AwesomeProject/
이동하여 Cartifile을 만듭니다.vi Cartfile
Alamofire와 SwiftyJSON을 사용했기 때문에 Cartifile에 다음과 같은 내용을 쓴다.github "Alamofire/Alamofire"
github "SwiftyJSON/SwiftyJSON"
다 쓴 후에 카르티지로 알람오페어와 스위프트 JSON을 지워라.carthage update --platform iOS --no-use-binaries
직접 두드리면 스위프트 JSON을 사용할 때 오류가 발생하기 때문에 옵션--no-use-binaries
이 첨부되어 있습니다.*** Fetching SwiftyJSON
*** Fetching Alamofire
*** Checking out Alamofire at "4.2.0"
*** Checking out SwiftyJSON at "3.1.3"
*** xcodebuild output can be found in /var/folders/wt/h0f881ys5697zvh5pvrkhbvr0000gn/T/carthage-xcodebuild.3V1iFn.log
*** Building scheme "Alamofire iOS" in Alamofire.xcworkspace
*** Building scheme "SwiftyJSON iOS" in SwiftyJSON.xcworkspace
4. 항목에 라이브러리 추가
라이브러리 선택
라이브러리 작성
/usr/local/bin/carthage copy-frameworks
.$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
$(SRCROOT)/Carthage/Build/iOS/SwiftyJSON.framework
5. Swift3.0으로 구현
AppDelegate.swift
AppDelegate.swift
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var navigationController: UINavigationController?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// rootになるViewControllerの設定
let root: ViewController = ViewController()
navigationController = UINavigationController(rootViewController: root)
window = UIWindow(frame: UIScreen.main.bounds)
window!.rootViewController = navigationController
return true
}
func applicationWillResignActive(_ application: UIApplication) {}
func applicationDidEnterBackground(_ application: UIApplication) {}
func applicationWillEnterForeground(_ application: UIApplication) {}
func applicationDidBecomeActive(_ application: UIApplication) {}
func applicationWillTerminate(_ application: UIApplication) {}
}
ViewController.swift
ViewController.swift
import UIKit
import Alamofire
import SwiftyJSON
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
// itemsをJSONの配列と定義
var items: [JSON] = []
override func viewDidLoad() {
super.viewDidLoad()
// TableViewを作成
let tableView = UITableView()
tableView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
tableView.delegate = self
tableView.dataSource = self
self.view.addSubview(tableView)
// QiitaのAPIからデータを取得
let listUrl = "http://qiita-stock.info/api.json";
Alamofire.request(listUrl).responseJSON{ response in
let json = JSON(response.result.value ?? 0)
json.forEach{(_, data) in
self.items.append(data)
}
tableView.reloadData()
}
}
// tableのcellにAPIから受け取ったデータを入れる
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "TableCell")
cell.textLabel?.text = items[indexPath.row]["title"].string
cell.detailTextLabel?.text = "投稿日 : \(items[indexPath.row]["send_date"].stringValue)"
return cell
}
// cellの数を設定
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
완성
총화
내용이 그리 어렵지 않다고 생각하지만 스위프트를 배우기 전에 개발 환경을 배워야 할 것이 많다.
Swifty JSON과 Alam ofire는 아주 편리해요!
[참고 사이트]
Reference
이 문제에 관하여([Swift3.0] API에서 JSON 데이터를 가져와 [초보자용] 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yutasuzuki/items/15682d737745acd03584텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)