我正在制作一个可以发布消息的应用程序.我将数据存储在Firebase中.当我发布新消息时,该特定单元格多次复制(所以我看到帖子有2,3,4次或更多次).但它只是Firebase中的一个帖子.当我刷新屏幕时(例如对数据进行排序),它只是一个帖子.我究竟做错了什么?
这是我的相关代码:
override func viewDidLoad() { super.viewDidLoad() DataService.ds.REF_POSTS.observeEventType(.Value,withBlock: { snapshot in let sortByDate = NSUserDefaults.standardUserDefaults().boolForKey("sortByDate") if sortByDate == true { self.sortingByDate() self.tableView.reloadData() } else { self.sortingByLikes() self.tableView.reloadData() } }) }
按日期排序数据:
func sortingByDate() { NSUserDefaults.standardUserDefaults().setBool(true,forKey: "sortByDate") sortDateBtn.setTitleColor(UIColor(red: 255/255,green: 102/255,blue: 102/355,alpha: 1.0),forState: .normal) sortLikeBtn.setTitleColor(UIColor(red: 76/255,green: 76/255,blue: 76/355,forState: .normal) if (searchController.active) { self.posts = [] DataService.ds.REF_POSTS.queryOrderedByChild("timestamp").observeEventType(.ChildAdded,withBlock: { snapshot in if let postDict = snapshot.value as? Dictionary<String,AnyObject> { let key = snapshot.key let post = Post(postKey: key,dictionary: postDict) self.posts.insert(post,atIndex: 0) } if let searchText = self.searchController.searchBar.text { self.filterContent(searchText) self.tableView.reloadData() } }) } else { self.posts = [] DataService.ds.REF_POSTS.queryOrderedByChild("timestamp").observeEventType(.ChildAdded,atIndex: 0) } self.tableView.reloadData() }) } }
按喜欢排序数据:
func sortingByLikes() { NSUserDefaults.standardUserDefaults().setBool(false,forKey: "sortByDate") sortLikeBtn.setTitleColor(UIColor(red: 255/255,forState: .normal) sortDateBtn.setTitleColor(UIColor(red: 76/255,forState: .normal) if (searchController.active) { self.posts = [] DataService.ds.REF_POSTS.queryOrderedByChild("likes").observeEventType(.ChildAdded,atIndex: 0) } if let searchText = self.searchController.searchBar.text { self.filterContent(searchText) self.tableView.reloadData() } }) } else { self.posts = [] DataService.ds.REF_POSTS.queryOrderedByChild("likes").observeEventType(.ChildAdded,atIndex: 0) } self.tableView.reloadData() }) } }
发布到Firebase:
func postToFirebase(imgurl: String?) { let imageForProfile = NSUserDefaults.standardUserDefaults().valueForKey("profileImage") var post: Dictionary<String,AnyObject> = [ "title": titleTextField.text!,"description": descriptionTextField.text!,"likes": 0,"location": locationTextField.text!,"username": usernamedisplay.text!,"uid": NSUserDefaults.standardUserDefaults().valueForKey(KEY_UID)!,"img": String(imageForProfile!),"timestamp": NSDate.timeIntervalSinceReferenceDate(),"lat": lat,"long": long,] if imgurl != nil { post["imageUrl"] = imgurl } let firebasePost = DataService.ds.REF_POSTS.childByAutoId() let url = NSURL(fileURLWithPath: "\(firebasePost)") let lastComponent = url.lastPathComponent if lastComponent != nil { post["postKey"] = lastComponent! } firebasePost.setValue(post) titleTextField.text = "" descriptionTextField.text = "" locationTextField.text = "" imageField.image = UIImage(named: "camera") imageSelected = false NSUserDefaults.standardUserDefaults().setBool(true,forKey: "sortByDate") }
泰伯维:
func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { if let cell = tableView.dequeueReusableCellWithIdentifier("PostCell") as? PostCell { let postList = searchController.active ? searchResult[indexPath.row] : posts[indexPath.row] let post = postList cell.request?.cancel() var image: UIImage? if let url = post.postimgurl { image = FeedVC.imageCache.objectForKey(url) as? UIImage } var image2: UIImage? if let url2 = post.userimgurl { image2 = FeedVC.imageCache.objectForKey(url2) as? UIImage } cell.configureCell(post,img: image,img2: image2) return cell } else { return PostCell() } }
我的cell.configurecell实现:
func configureCell(post: Post,img: UIImage?,img2: UIImage?) { self.post = post likeRef = DataService.ds.REF_USER_CURRENT.childByAppendingPath("likes").childByAppendingPath(post.postKey) self.descriptionText.text = post.postDescription self.descriptionText.scrollRangetoVisible(NSMakeRange(0,0)) self.likes = post.likes self.likesLbl.text = "\(post.likes) likes" self.postTitle.text = post.postTitle self.postLocation.text = post.postLocation self.username.text = post.username self.postKeyLbl.text = post.key self.lat = post.lat self.long = post.long if post.postimgurl != nil { if img != nil { self.showcaseImg.image = img } else { request = Alamofire.request(.GET,post.postimgurl!).validate(contentType: ["image/*"]).response(completionHandler: { request,response,data,err in if err == nil { let _img = UIImage(data: data!)! self.showcaseImg.image = img FeedVC.imageCache.setobject(_img,forKey: self.post.postimgurl!) } else { print(err.debugDescription) } }) } } else { self.showcaseImg.hidden = true } if post.userimgurl != nil { if img2 != nil { self.profileImg.image = img2 } else { request = Alamofire.request(.GET,post.userimgurl!).validate(contentType: ["image/*"]).response(completionHandler: { request,err in if err == nil { let _img2 = UIImage(data: data!)! self.profileImg.image = img2 FeedVC.imageCache.setobject(_img2,forKey: self.post.userimgurl!) } else { print(err.debugDescription) } }) } } else { print("no image") } likeRef.observeSingleEventOfType(.Value,withBlock: { snapshot in if snapshot.value is NSNull { self.likesImg.image = UIImage(named: "heart") } else { self.likesImg.image = UIImage(named: "heart-filled") } }) let getUid = NSUserDefaults.standardUserDefaults().valueForKey(KEY_UID) if String(getUid!) == (self.post.postUid) { editBtn.hidden = false delBtn.hidden = false let usernameDefaults = NSUserDefaults.standardUserDefaults().valueForKey("username") if usernameDefaults != nil { username.text = String(usernameDefaults!) } let checkIfImageChanged = NSUserDefaults.standardUserDefaults().boolForKey("imgIsChanged") if checkIfImageChanged == true { self.changePost() NSUserDefaults.standardUserDefaults().setBool(false,forKey: "imgIsChanged") } } else { editBtn.hidden = true delBtn.hidden = true } mapVC.markerTitle = postTitle.text mapVC.markerSnippet = postLocation.text mapVC.markerLat = lat mapVC.markerLong = long }
谢谢你的帮助!
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。