ios - Array Elements continously appended -
im querying firebase , elements returning properly. when search twice 2 elements appear. means 2 elements appended array. should 1 , 1 thing comes search. 2 elements should not there if search twice.
if self.postsarray.count == 0 { self.postsarray.append(newpost!) self.filteredposts = self.postsarray.filter { (post) -> bool in return post.title.lowercased().contains(stringvalue.lowercased()) } dispatchqueue.main.async { self.explorecollectionview?.reloaddata() } } else { post in self.postsarray { if post.key == newpost?.key{ self.filteredposts = self.postsarray.filter { (post) -> bool in return post.title.lowercased().contains(stringvalue.lowercased()) } dispatchqueue.main.async { self.explorecollectionview?.reloaddata() } return } else { self.postsarray.append(newpost!) // self.postsarray.sort(by: { (post1, post2) -> bool in // return post1.title.compare(post2.title) == .orderedascending // }) self.filteredposts = self.postsarray.filter { (post) -> bool in return post.title.lowercased().contains(stringvalue.lowercased()) } dispatchqueue.main.async { self.explorecollectionview?.reloaddata() } } } }
so im asking nicely if @ , see error in logic is making things added filtered events array more once
i guess problem in loop , there whenever new post not equal appending new post array, whereas should appended once
so can use filter see if contains newpost
so replace
for post in self.postsarray { if post.key == newpost?.key{ self.filteredposts = self.postsarray.filter { (post) -> bool in return post.title.lowercased().contains(stringvalue.lowercased()) } dispatchqueue.main.async { self.explorecollectionview?.reloaddata() } return } else { self.postsarray.append(newpost!) // self.postsarray.sort(by: { (post1, post2) -> bool in // return post1.title.compare(post2.title) == .orderedascending // }) self.filteredposts = self.postsarray.filter { (post) -> bool in return post.title.lowercased().contains(stringvalue.lowercased()) } dispatchqueue.main.async { self.explorecollectionview?.reloaddata() } }
with
let filteredarr = self.postsarray.filter { (post) -> bool in return post.key == newpost?.key } if filteredarr.count == 0 { //append self.postsarray.append(newpost!) } self.filteredposts = self.postsarray.filter { (post) -> bool in return post.title.lowercased().contains(stringvalue.lowercased()) } dispatchqueue.main.async { self.explorecollectionview?.reloaddata() }
Comments
Post a Comment