From 25346955b42a86c2e099dd29e1799ab2426c99c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=83=9C=ED=98=84?= Date: Fri, 5 Aug 2022 12:22:01 +0900 Subject: [PATCH] =?UTF-8?q?[#92]=20Kingfisher=20=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NetworkBasic.xcodeproj/project.pbxproj | 17 +++++++++++++++++ .../xcshareddata/swiftpm/Package.resolved | 9 +++++++++ .../APIManager/ImageSearchAPIManager.swift | 2 +- .../ImageSearch/ImageSearchViewController.swift | 6 ++++-- .../SearchResultCollectionViewCell.swift | 10 ++++------ 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/NetworkBasic/NetworkBasic.xcodeproj/project.pbxproj b/NetworkBasic/NetworkBasic.xcodeproj/project.pbxproj index 570db74..be81a39 100644 --- a/NetworkBasic/NetworkBasic.xcodeproj/project.pbxproj +++ b/NetworkBasic/NetworkBasic.xcodeproj/project.pbxproj @@ -44,6 +44,7 @@ BDDF771F289A84E80096196B /* SearchResultCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDDF771E289A84E80096196B /* SearchResultCollectionViewCell.swift */; }; BDDF773D289B508C0096196B /* JGProgressHUD in Frameworks */ = {isa = PBXBuildFile; productRef = BDDF773C289B508C0096196B /* JGProgressHUD */; }; BDDF7751289CB3FF0096196B /* ImageSearchAPIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDDF7750289CB3FF0096196B /* ImageSearchAPIManager.swift */; }; + BDDF775D289CC2F20096196B /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = BDDF775C289CC2F20096196B /* Kingfisher */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -90,6 +91,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + BDDF775D289CC2F20096196B /* Kingfisher in Frameworks */, BD85738E28977D22007F294F /* SwiftyJSON in Frameworks */, BDDF773D289B508C0096196B /* JGProgressHUD in Frameworks */, BD85738B28977CF5007F294F /* Alamofire in Frameworks */, @@ -305,6 +307,7 @@ BD85738A28977CF5007F294F /* Alamofire */, BD85738D28977D22007F294F /* SwiftyJSON */, BDDF773C289B508C0096196B /* JGProgressHUD */, + BDDF775C289CC2F20096196B /* Kingfisher */, ); productName = NetworkBasic; productReference = BD7915072890DDA8000A12EE /* NetworkBasic.app */; @@ -338,6 +341,7 @@ BD85738928977CF5007F294F /* XCRemoteSwiftPackageReference "Alamofire" */, BD85738C28977D22007F294F /* XCRemoteSwiftPackageReference "SwiftyJSON" */, BDDF773B289B508C0096196B /* XCRemoteSwiftPackageReference "JGProgressHUD" */, + BDDF775B289CC2F20096196B /* XCRemoteSwiftPackageReference "Kingfisher" */, ); productRefGroup = BD7915082890DDA8000A12EE /* Products */; projectDirPath = ""; @@ -640,6 +644,14 @@ minimumVersion = 2.0.0; }; }; + BDDF775B289CC2F20096196B /* XCRemoteSwiftPackageReference "Kingfisher" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/onevcat/Kingfisher.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 7.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -658,6 +670,11 @@ package = BDDF773B289B508C0096196B /* XCRemoteSwiftPackageReference "JGProgressHUD" */; productName = JGProgressHUD; }; + BDDF775C289CC2F20096196B /* Kingfisher */ = { + isa = XCSwiftPackageProductDependency; + package = BDDF775B289CC2F20096196B /* XCRemoteSwiftPackageReference "Kingfisher" */; + productName = Kingfisher; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = BD7914FF2890DDA8000A12EE /* Project object */; diff --git a/NetworkBasic/NetworkBasic.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NetworkBasic/NetworkBasic.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index dd25791..38e4f24 100644 --- a/NetworkBasic/NetworkBasic.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NetworkBasic/NetworkBasic.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -18,6 +18,15 @@ "version" : "2.2.0" } }, + { + "identity" : "kingfisher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/onevcat/Kingfisher.git", + "state" : { + "revision" : "2231f92b5af71c78ad2c1450e583bf4a8713b951", + "version" : "7.3.1" + } + }, { "identity" : "swiftyjson", "kind" : "remoteSourceControl", diff --git a/NetworkBasic/NetworkBasic/APIManager/ImageSearchAPIManager.swift b/NetworkBasic/NetworkBasic/APIManager/ImageSearchAPIManager.swift index afd212c..0f0c9bb 100644 --- a/NetworkBasic/NetworkBasic/APIManager/ImageSearchAPIManager.swift +++ b/NetworkBasic/NetworkBasic/APIManager/ImageSearchAPIManager.swift @@ -38,7 +38,7 @@ final class ImageSearchAPIManager { print("JSON: \(json)") let totalCount = json["total"].intValue - let list = json["item"].arrayValue.map { $0["thumbnail"].stringValue } + let list = json["items"].arrayValue.map { $0["thumbnail"].stringValue } completionHandler(totalCount, list) diff --git a/NetworkBasic/NetworkBasic/Scenes/ImageSearch/ImageSearchViewController.swift b/NetworkBasic/NetworkBasic/Scenes/ImageSearch/ImageSearchViewController.swift index a0696d6..1621a89 100644 --- a/NetworkBasic/NetworkBasic/Scenes/ImageSearch/ImageSearchViewController.swift +++ b/NetworkBasic/NetworkBasic/Scenes/ImageSearch/ImageSearchViewController.swift @@ -31,6 +31,8 @@ class ImageSearchViewController: UIViewController { self.totalCount = totalCount self.list.append(contentsOf: list) + print(list) + DispatchQueue.main.async { self.collectionView.reloadData() } @@ -42,10 +44,9 @@ extension ImageSearchViewController: UISearchBarDelegate { // 검색 버튼 클릭 시 실행. (키보드 Return키에 디폴트 구현) func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { - + list.removeAll() if let text = searchBar.text { // 검색 결과가 계속 바뀌기 때문에, 그럴 때마다 초기화 해줄 필요가 있음 - list.removeAll() startPage = 1 collectionView.scrollsToTop = true fetchImage(query: text) @@ -88,6 +89,7 @@ extension ImageSearchViewController: UICollectionViewDelegate, UICollectionViewD guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: SearchResultCollectionViewCell.reuseidentifier, for: indexPath) as? SearchResultCollectionViewCell else { return UICollectionViewCell() } + print("cell") cell.configureCell(withImageString: list[indexPath.row]) return cell } diff --git a/NetworkBasic/NetworkBasic/Scenes/ImageSearch/SearchResultCollectionViewCell.swift b/NetworkBasic/NetworkBasic/Scenes/ImageSearch/SearchResultCollectionViewCell.swift index 50b2617..4f9dcdd 100644 --- a/NetworkBasic/NetworkBasic/Scenes/ImageSearch/SearchResultCollectionViewCell.swift +++ b/NetworkBasic/NetworkBasic/Scenes/ImageSearch/SearchResultCollectionViewCell.swift @@ -7,6 +7,8 @@ import UIKit +import Kingfisher + final class SearchResultCollectionViewCell: UICollectionViewCell { @IBOutlet weak var ImageView: UIImageView! { didSet { @@ -15,12 +17,8 @@ final class SearchResultCollectionViewCell: UICollectionViewCell { } func configureCell(withImageString imageString: String?) { - guard let imageURLString = imageString else { return } - let imageURL = URL(string: imageURLString) - if let imageData = try? Data(contentsOf: imageURL!) { - self.ImageView.image = UIImage(data: imageData) - } else { - self.ImageView.backgroundColor = .black + if let url = URL(string: imageString!) { + ImageView.kf.setImage(with: url) } } }