Twitter API에서 얻은 트윗을 iOS 앱에서 표시

14630 단어 TwitterAPISwift5

이 기사의 내용



이 기사는 이전에 작성한 기사입니다.
Twitter API를 처음 만져보세요 (트윗 얻기)
계속됩니다.

내용으로,
- Twitter API로 얻은 트윗을 TableView 형식으로 표시합니다.
일을하십시오.

환경



Swift5
Xcode 11.3.1

1. 앱 구성



앱은 다음 두 개의 ViewControllerl 클래스로 구성됩니다.
- InitialViewController
(사용자 이름과 검색 할 트윗 수를 입력하여 TimeLineViewController로 전환)
- TimeLineViewController
(트윗 얻기, 얻은 트윗 표시)

이 기사의 끝에 코드 전문을 얹은 링크를 올려 놓으니이 기사만으로 모르면 참조하십시오.

다음은 storyboard입니다. (정말 간단합니다 ...)


실제로 트윗을 얻으면이 느낌이됩니다. (완성도)
응답의 경우 상대방의 사용자 이름을 숨 깁니다.



2.API로 트윗 받기, 표시



이 기사의 메인은 API에서 트윗을 가져 와서 표시하기 때문에 주로 TimeLineViewController의 처리를 중심으로 작성합니다.

이 앱에서는 다음 라이브러리를 사용했습니다. (Cocoapods로 설치)
- Alamofire
- SwiftyJSON
- SDWebImage

Cocoapods 설정은 다음을 참조하십시오.
【Swift】CocoaPods 도입 순서

2-1.TwitterAPI로 트윗 받기



Alamofire를 사용하여 HTTP 요청을합니다.
AF.request(urlText, method: .get, parameters: nil, encoding: 
JSONEncoding.default, headers: headers).responseJSON { (response) in

URL, 헤더는 위에서 GET 메소드를 사용한 것과 동일합니다.

Alamofire는 HTTP 요청을 한 후 response에 따른 처리를 클로저로 작성합니다.
클로저 내에서
- JSON 퍼스
- 트윗 텍스트 데이터를 배열에 저장
- 프로필 이미지 URL 가져오기
하고 있습니다.

Twiiter API로 얻을 수있는 트윗의 JSON 형식에 대해서는 아래를 참조하십시오.
Introduction to Tweet JSON

헤더의 ""안에는, 마지막에 입수한 자신의 베아라토큰을 넣어 주세요.
$ curl -H "Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAA
AAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 
'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=100'

이것은 이전 기사의 curl에서 트윗을 얻는 명령입니다.Bearer 부분에서 넣으십시오.

다음은 트윗을 검색하는 전체 메소드입니다.

TimeLineViewController.swift
func getTweets(){
       let urlText = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=
                      \(screenName)&count=\(tweetCount)"
       let headers:HTTPHeaders = ["Authorization": ""]

        //Getメソッドでツイート取得
        AF.request(urlText, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in

            switch response.result{

            //リクエスト成功
            case .success:
                for i in 0..<self.tweetCount{
                    let json:JSON = JSON(response.data as Any)

                    //JSONをパースしてツイートを取得
                    let text = json[i]["text"].string!
                    //取得したツイートを配列に格納
                    self.tweetArray.append(text)

                    //JSONをパースしてプロフィール画像のURLを取得
                    let profileImageUrl = json[i]["user"]["profile_image_url_https"].string
                    //プロフィール画像のURLを取得
                    self.urlString = profileImageUrl!

                }
                break

            //リクエスト失敗
            case .failure(let error):
                print(error)
                break
            }

            self.tableView.reloadData()
        }
    }

2-2. 취득한 트윗을 TableView에서 표시



tableView의 기능을 사용하여 트윗을 표시합니다.
cellForRowAt 중에서 취득한 데이터를 셀에 반영합니다.

다음은 주요 기능 코드입니다.

TimeLineViewController.swift
    //セクションの数
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    //セルの数
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return tweetArray.count
    }

    //セルの構成
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        let profileImageURL = URL(string: urlString as String)!

        //セルにプロフィール画像を表示させる
        cell.imageView?.sd_setImage(with: profileImageURL, completed: { (image, error, _, _) in

            if error == nil{
                print("Not error")
                cell.setNeedsLayout()
            }
            else{
               print(error)
            }
        })

        //セルにツイートを表示させる
        cell.textLabel?.text = self.tweetArray[indexPath.row]
        cell.textLabel?.adjustsFontSizeToFitWidth = true

        return cell
    }

    //セルが選択された時
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("didSelectRowAt", indexPath.row)
        print("NSindexPath.row: ", (indexPath as NSIndexPath).row)
    }

마지막으로



다음은 전체 코드가있는 리포지토리 링크입니다.
htps : // 기주 b. 코 m / 마사키 사카이 0305 / 토테라 피아 p

Swift와 API 공부를 위해 이번 트윗 취득을 API로 실시하고 그것을 표시하는 곳까지 정리했습니다.
자신과 비슷한 공부를 시작한 사람을 이해하는 데 도움이 되길 바랍니다.

좋은 웹페이지 즐겨찾기