前提・実現したいこと
ここに質問の内容を詳しく書いてください。
swift でSNSアプリを作成しております.
クラウドはニフティクラウドをつかっております.
画像を絞り込む際に完全一致ではなく,含むもので表示したいです.
発生している問題・エラーメッセージ
画像を絞り込む際に完全一致ではなく,含むもので表示したいです.
###現在の状況
ビルド,エラーともになく動いているのですが,表示に不満があります.
該当のソースコード
swift5
1class SearchViewController: UIViewController ,UISearchBarDelegate,UICollectionViewDataSource,UICollectionViewDelegate{ 2 3 var posts = [Post]() 4 var searchBar: UISearchBar! 5 var searchResults:[String] = [] 6 7 @IBOutlet weak var searchedPostCollectionView: UICollectionView! 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 setSearchBar() 13 14 searchedPostCollectionView.dataSource = self 15 searchedPostCollectionView.delegate = self 16 17 // レイアウトを調整 18 let layout = UICollectionViewFlowLayout() 19 layout.itemSize = CGSize(width: 120, height: 120) 20 searchedPostCollectionView.collectionViewLayout = layout 21 // 1行あたりのアイテム数 22 let _: CGFloat = 3 23 // レイアウト設定 24 layout.minimumInteritemSpacing = 0 25 searchedPostCollectionView.collectionViewLayout = layout 26 27 searchFromTimeline(searchText: nil) 28 } 29 30 func setSearchBar() { 31 // NavigationBarにSearchBarをセット 32 if let navigationBarFrame = self.navigationController?.navigationBar.bounds { 33 let searchBar: UISearchBar = UISearchBar(frame: navigationBarFrame) 34 searchBar.delegate = self 35 searchBar.placeholder = "興味のあるものを調べてみよう!" 36 searchBar.autocapitalizationType = UITextAutocapitalizationType.none 37 navigationItem.titleView = searchBar 38 navigationItem.titleView?.frame = searchBar.frame 39 self.searchBar = searchBar 40 } 41 } 42 43 func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool { 44 searchBar.setShowsCancelButton(true, animated: true) 45 return true 46 } 47 48 func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 49 searchFromTimeline(searchText: nil) 50 searchBar.showsCancelButton = false 51 self.view.endEditing(true) 52 self.searchedPostCollectionView.reloadData() 53 setSearchBar() 54 } 55 56 func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 57 searchFromTimeline(searchText: searchBar.text) 58 } 59 60 61 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 62 return posts.count 63 } 64 65 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 66 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) 67 68 let searchImageView = cell.viewWithTag(1) as! UIImageView 69 let searchImagePath = posts[indexPath.row].imageUrl 70 searchImageView.kf.setImage(with: URL(string: searchImagePath)) 71 72 return cell 73 } 74 75 76 77 func searchFromTimeline(searchText: String?) { 78 let query = NCMBQuery(className: "Post") 79 query?.includeKey("user") 80 81 // 降順 82 query?.order(byDescending: "createDate") 83 84 *******問題箇所****** 85 if searchText != nil{ 86 let text = searchText 87 query?.whereKey("text", equalTo: text) 88 } 89 90 query?.findObjectsInBackground({ (result, error) in 91 if error != nil { 92 SVProgressHUD.showError(withStatus: error!.localizedDescription) 93 } else { 94 self.posts = [Post]() 95 96 for postObject in result as! [NCMBObject] { 97 // ユーザー情報をUserクラスにセット 98 let user = postObject.object(forKey: "user") as! NCMBUser 99 let userModel = User(objectId: user.objectId, userName: user.userName) 100 userModel.displayName = user.object(forKey: "displayName") as? String 101 102 // 投稿の情報を取得 103 let imageUrl = postObject.object(forKey: "imageUrl") as! String 104 let text = postObject.object(forKey: "text") as! String 105 106 // 2つのデータ(投稿情報と誰が投稿したか?)を合わせてPostクラスにセット 107 let post = Post(objectId: postObject.objectId, user: userModel, imageUrl: imageUrl, text: text, createDate: postObject.createDate) 108 109 // 配列に加える 110 self.posts.append(post) 111 } 112 self.searchedPostCollectionView.reloadData() 113 114 } 115 }) 116 } 117 118 119} 120
よろしくお願いいたします.
回答1件
あなたの回答
tips
プレビュー