想法是這樣....
兩階段的資料庫的找法
先去查 Followers entity
找出目前登入者有關注的人的所有名單, 放在 followeringusers array
然後在這個 followeringusers array...
去找 entity name 為 Posts .... 所記錄的圖片和留言
func searchFollower(){
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let followersrequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Followers")
followersrequest.predicate = NSPredicate(format: "follower = %@", currentUser)
followersrequest.returnsObjectsAsFaults = false
do{
let followersResults = try context.fetch(followersrequest)
if(followersResults.count > 0 ){
for followersResult in followersResults as! [NSManagedObject] {
let followeringUser = followersResult.value(forKey: "following") as! String
followeringusers.append(followeringUser)
}
}
}catch{
}
// 加上自己
followeringusers.append(currentUser)
for followinguser in followeringusers {
let postsRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Posts")
postsRequest.predicate = NSPredicate(format: "username = %@", followinguser)
postsRequest.returnsObjectsAsFaults = false
do {
let results = try context.fetch(postsRequest)
if results.count > 0 {
for result in results as! [NSManagedObject]{
let username = result.value(forKey: "username") as! String
let message = result.value(forKey: "message") as! String
let image = result.value(forKey: "image") as! NSData
usernames.append(username)
messages.append(message)
imageFiles.append(image)
}
}
}catch{
print("Could not fin following User info")
}
}
//print(followeringusers)
}
找完之後... 在 這邊加載
圖片這邊... 要做一下處理.. 先把 NSData 轉成 Data... 然後呼叫 UIimage(data: data)
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! FeedTableViewCell
// Configure the cell...
cell.usernameLabel.text = usernames[indexPath.row]
cell.messageLabel.text = messages[indexPath.row]
cell.postedImage.image = UIImage(data: imageFiles[indexPath.row] as Data)
return cell
}
沒有留言:
張貼留言