[Swift3.0] API에서 JSON 데이터를 가져와 [초보자용] 표시

16630 단어 SwiftCarthage
평소 자바스크립트만 쓰다가 스위프트를 접할 기회가 생겨'xcode 활용법','패키지 관리는 무엇을 써야 하는가'등 환경 차이에 당혹스러워했다.
똑같은 사람들이 많을 것 같아서 이 강좌를 썼어요.
그럼에도 불구하고 이번에는 swift에 대한 설명이 없다.
그리고storyboard를 사용하고 싶지 않아서 사용하지 않았어요.(TableView만...)
완성되면 이런 느낌이야.

1. 프로젝트 만들기


프로젝트를 만들기 전에 작업할 폴더를 만듭니다.
이번 Docoments(파일) 바로 아래에 swift 폴더가 만들어집니다.
Documents
 └ swift
xcode를 시작한 후 [File]→[New]→[Project]를 선택합니다.
선택한 후 Project를 작성합니다.
템플릿Single View Application 을 선택합니다.

이번에는'Awesome Project'라는 이름으로 프로젝트를 제작했다.
이 근처는 마음대로 하세요.

2. Package Manager 설치


그런 다음 Package Manager를 설치합니다.
세 개의 후보가 있는 매크로 패키지 관리자입니다.
  • Cocoapods
  • Carthage
  • Swift Package Manager
  • 이번에는 "Carthage"를 사용해 포장 관리를 하려고 합니다.읽는 방법이 마치 카드인 것 같다.
    Carrthage 설치는 Homebrew를 사용하기 때문에 미리 설치/업데이트하십시오.

    설치하다.

    brew install carthage

    3. 라이브러리 설치


    terminal로 디렉터리로 이동합니다.cd Documents/swift/AwesomeProject/이동하여 Cartifile을 만듭니다.vi CartfileAlamofire와 SwiftyJSON을 사용했기 때문에 Cartifile에 다음과 같은 내용을 쓴다.
  • Alamofire는 요청을 간소화할 수 있는 프로그램 라이브러리입니다.
  • SwifttyJSON은 JSON 유형을 정의하는 라이브러리입니다.
  • 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. 항목에 라이브러리 추가


    라이브러리 선택

  • 왼쪽 열의 트리에서 [AwesomeProject]를 선택합니다.
  • 선택한 후 [General]을 선택합니다.
  • [EmbedBinaries]의 +를 클릭합니다.
  • 팝업(63 시도)[Add Other...]탭
  • Awesome Project/Carrthage/Build/iOS와 이동합니다.framework가 적힌 파일을 선택하고 [Open]을 클릭합니다.
  • 다음에 옵션을 묻기 때문에 [Create folder reference]를 선택하고 [Finish]를 진행합니다.
  • 결국 이런 느낌.
  • 라이브러리 작성

  • [General]에서 [Build Phases]로 이동합니다.
  • + 를 눌러 [New Run Script Phase]를 선택합니다.

  • 다음과 같이 Run Script를 엽니다.
  • "Type a script or draga script file from your workspace to insert its path"라고 기술한 부분/usr/local/bin/carthage copy-frameworks.
  • Run script onlywhen installing을 선택합니다.
  • Input File에 다음을 추가합니다.
  • $(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는 아주 편리해요!

    [참고 사이트]

  • http://qiita.com/yutat93/items/1b6dfe34fa8537cf3329
  • http://qiita.com/seiya_orz/items/64b47a38a118af0becf6
  • 좋은 웹페이지 즐겨찾기