Men Parse ma'lumotlar bazasidan bir sinfda (maktabda) foydalanuvchilar jadvalini yaratishga harakat qilaman. Barcha foydalanuvchilar foydalanuvchi nomiga ega bo'lishi kerak, lekin hamma ham ilovaga o'zining to'liq ismini bermagan yoki profil rasmini o'rnatmagan. Men ushbu kodni ishlataman:
let studentsQuery = PFQuery(className:"_User")
studentsQuery.whereKey("objectId", containedIn: studentsArray! as! [AnyObject])
let query2 = PFQuery.orQueryWithSubqueries([studentsQuery])
query2.findObjectsInBackgroundWithBlock {
(results: [PFObject]?, error: NSError?) -> Void in
if error != nil {
// Display error in tableview
} else if results! == [] {
spinningActivity.hideAnimated(true)
print("error")
} else if results! != [] {
if let objects = results {
for object in objects {
if object.objectForKey("full_name") != nil {
let studentName = object.objectForKey("full_name")! as! String
self.studentNameResults.append(studentName)
}
if object.objectForKey("username") != nil {
let studentUsername = object.objectForKey("username")! as! String
self.studentUsernameResults.append(studentUsername)
}
if object.objectForKey("profile_picture") != nil {
let studentProfilePictureFile = object.objectForKey("profile_picture") as! PFFile
studentProfilePictureFile.getDataInBackgroundWithBlock({ (image: NSData?, error: NSError?) in
if error == nil {
let studentProfilePicture : UIImage = UIImage(data: image!)!
self.studentProfilePictureResults.append(studentProfilePicture)
} else {
print("Can't get profile picture")
// Can't get profile picture
}
self.studentsTableView.reloadData()
})
spinningActivity.hideAnimated(true)
} else {
// no image
}
}
}
} else {
spinningActivity.hideAnimated(true)
print("error")
}
}
Agar barcha foydalanuvchilarda foydalanuvchi nomi, to'liq_ism va profil_rasmi bo'lsa, bu kod yaxshi ishlaydi. Biroq, foydalanuvchining foydalanuvchi nomlaridan tableView
ni olish va foydalanuvchining tegishli tableViewCell
raqamiga foydalanuvchining ismi yoki rasmini faqat foydalanuvchining rasmi bo'lsa, qanday qo'shishni tushunolmayapman. Mening tableView
qurilmam qanday sozlangan:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return studentUsernameResults.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("studentsCell", forIndexPath: indexPath) as! StudentsInClassInformationTableViewCell
cell.studentProfilePictureImageView.layer.cornerRadius = cell.studentProfilePictureImageView.frame.size.width / 2
cell.studentProfilePictureImageView.clipsToBounds = true
cell.studentProfilePictureImageView.image = studentProfilePictureResults[indexPath.row]
cell.studentUsernameLabel.text = studentUsernameResults[indexPath.row]
cell.studentNameLabel.text = studentNameResults[indexPath.row]
return cell
}
studentProfilePictureResults
, studentUsernameResults
va studentNameResults
foydalanuvchi rasmi, foydalanuvchi nomi va Parsedan olingan ism natijalari massivlaridan keladi. Agar foydalanuvchida profil rasmi bo'lmasa, men Index is out of range
xatosini olaman. Shubhasiz, bu, aytaylik, uchta nom, uchta foydalanuvchi nomi va faqat ikkita rasm borligini anglatadi va Xcode hujayrani qanday sozlashni bilmaydi. Savolim: Qanday qilib foydalanuvchining foydalanuvchi nomidan tableView-ni oʻrnatishim va uning ismi va profil rasmini faqat bitta katakchaga joylashtirishim mumkin, faqat ularda mavjud boʻlsa?