2017-04-02 65 views
0

我有一個存儲在Parse(後端)上的用戶列表,其中存儲了用戶的個人資料圖片,名爲「profile_picture」。但是,某些用戶沒有個人資料圖片,因此他們的profile_picture列是「未定義」(沒有值)。如何處理空PFFile對象(解析後端,Swift)

我正在使用搜索欄查詢所有用戶,並使用用戶的個人資料圖片和用戶名更新tableview。我這樣做是通過附加的用戶名VAR SearchResult所= String和輪廓PIC爲VAR searchImages = PFFile查詢,像這樣經過:

  let query = PFQuery.orQuery(withSubqueries: [usernameQuery!,fbUsername!, firstnameQuery!, lastnameQuery!]); 

     searchActive = true; 

     query.findObjectsInBackground { (objects, error) in 

      if error != nil { 

       print("There was an error getting userlist"); 

      } 

      else { 

       if let users = objects { 

        self.searchResults.removeAll(keepingCapacity: false); 

        for object in users { 

         if let user = object.object(forKey: "username") as? String { 

          self.searchResults.append(user); 
         } 

         if let picture = object.object(forKey: "profile_picture") as? PFFile { 

          self.searchImages.append(picture); 

         } 

         self.searchTableView.reloadData(); 

        } 

的問題是,當「profile_picture」一欄是空的,它確實不附加任何內容,這意味着searchResults數組(包含用戶名)和searchImages數組(包含PFFiles)具有不同的大小,這會導致值的分配不協調。他們應該平行排列。我使用這些數組中的值在表格單元格中分配值。

希望你們明白我的問題!在此先感謝

回答

0

因此,您的username字段絕對不是空的。我想你可以在檢查profile_picture是否爲零後加上else。喜歡:

if let picture = object.object(forKey: "profile_picture") as? PFFile { 
    self.searchImages.append(picture); 
} else { 
    self.searchImages.append(UIImage(named:"placeholder")) 
} 
+0

嗨,感謝您的回覆。我確實這麼做了,但也沒有奏效。我現在所做的就是創建一個名爲userInfo的結構,如下所示: struct userInfo { var searchResults:String =「」 var searchImages:UIImage = UIImage(named:「defaultProfile.png」)!; } 但是,它現在只顯示defaultProfile圖片和沒有下載的圖片。這是我正在做的,以在cellforrowatindexpath中分配值: cell.usernameLabel.text = checks [indexPath.row] .searchResults; cell.userImage.image = checks [indexPath.row] .searchImages; –