Alamofire와 SwiftyJSON
15412 단어 SwiftAlamofireSwiftyJSON
Alamofire와 SwiftyJSON의 간단한 앱
완성형은 이런 느낌
기능 설명
TextField.text
는 검색 키워드로 이용한다 TextField.text
는 검색 할 URL 수를 입력합니다.코드
pod 'SwiftyJSON'
및 pod 'Alamofire'
를 입력 Podfile
pod 'SwiftyJSON'
pod 'Alamofire'
모델
GetPixabayDataModel
import Foundation
import Alamofire
import SwiftyJSON
class GetPixabayDataModel{
var imageURLArray:[[String:String]] = []
}
extension GetPixabayDataModel{
func searchImage(searchKey:String,searchCount:Int){
let pixabayURL = "https://pixabay.com/api/?key=~~~~~~~~(APIKey)~~~~~~~~~~&q=\(searchKey)" //APIKey
AF.request(pixabayURL, method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON { (response) in
switch response.result{
case.success:
self.imageURLArray = [] //検索する時に、データの重複を防ぐ
let json:JSON = JSON(response.data as Any)
for count in 0...searchCount - 1{
if json["hits"][count]["webformatURL"].string != nil{ //取得できる"webformatURL"が存在する時は、"webformatURL"を取得する
//jsonの中の配列"hits"からcount番目の各"webformatURL"をString型で取得して配列に入れる
self.imageURLArray.append(["imageURLString":json["hits"][count]["webformatURL"].string!])
}else{
break //取得できる"webformatURL"が無くなった時に処理を終わらせる
}
}
case.failure(let error):
print(error)
}
}
}
}
컨트롤러
ViewController
import UIKit
class ViewController: UIViewController{
@IBOutlet weak var keyowrdTextField: UITextField!
@IBOutlet weak var countTextField: UITextField!
@IBOutlet weak var searchButton: UIButton!
@IBOutlet weak var tableView: UITableView!
let getPixabayDataModel = GetPixabayDataModel()
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
searchButton.layer.cornerRadius = 17.0
}
@IBAction func search(_ sender: Any) {
if (keyowrdTextField.text!.isEmpty && countTextField.text!.isEmpty) != true{
self.getPixabayDataModel.searchImage(searchKey: self.keyowrdTextField.text!, searchCount: Int(self.countTextField.text!)!)
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.tableView.reloadData()
}
}else{
//アラート表示など エラー処理
}
}
}
ViewController
import Foundation
import UIKit
extension ViewController:UITableViewDelegate,UITableViewDataSource{
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 85
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
self.getPixabayDataModel.imageURLArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let cellURLLabel = cell.contentView.viewWithTag(1) as! UILabel
cellURLLabel.text = self.getPixabayDataModel.imageURLArray[indexPath.row]["imageURLString"]
return cell
}
}
끝
최근 Realm과 FireStore만 하고 있었으므로, 잊지 않도록 사용해 보았습니다.
이번 앱을 기반으로 기능을 늘리고 싶다 (URL을 바탕으로 이미지를 표시하거나)
Reference
이 문제에 관하여(Alamofire와 SwiftyJSON), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/HiroUrata/items/f3f2ffa6680de1e6b5c3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Alamofire와 SwiftyJSON), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/HiroUrata/items/f3f2ffa6680de1e6b5c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)