I have like a social app with a sort of newsfeed. if u click on the users name from a post in the newsfeed, you will go to his profile. Now i can't retrieve the data from that specific cell/post to the other viewController. so i have to display the user's profile, with he's username, etc. but that doesn't work?
i have a Post model:
class Post { private var _postDescription: String! private var _profileImageURL: String? private var _likes: Int! private var _username: String! private var _postKey: String! private var _timeStamp: String! private var _postRef: Firebase! var postDescription: String? { return _postDescription } var likes: Int { return _likes } var username: String { return _username } var postKey: String { return _postKey } var profileImageURL: String? { return _profileImageURL } init(description: String, username: String, profileImageURL: String?) { self._postDescription = description self._username = username self._profileImageURL = profileImageURL } init(postKey: String, dictionary: Dictionary<String, AnyObject>) { self._postKey = postKey if let likes = dictionary["likes"] as? Int { self._likes = likes } if let desc = dictionary ["description"] as? String { self._postDescription = desc } if let imgUrl = dictionary["profileImg"] as? String { self._profileImageURL = imgUrl } if let user = dictionary ["username"] as? String { self._username = user } else { self._username = "" } self._postRef = DataService.ds.REF_POST.childByAppendingPath(self._postKey) } } this is my profileVC:
class ProfileVC: UIViewController { @IBOutlet weak var username: UILabel! var post: Post? override func viewDidLoad() { super.viewDidLoad() username.text = post.username // gives me a nil error. } } and i use a TapGestureRecognizer in my tableViewCell to perform the segue. in my cellForRowAtIndexPath:
let profileLblTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(NewsVC.goToProfileScreen(_:))) profileLblTapRecognizer.numberOfTapsRequired = 1 profileLblTapRecognizer.delegate = self cell.usernameLabel.tag = indexPath.row cell.usernameLabel.userInteractionEnabled = true cell.usernameLabel.addGestureRecognizer(profileLblTapRecognizer) and the goToProfileScreen function:
func goToProfileScreen(gesture: UITapGestureRecognizer) { self.performSegueWithIdentifier("ProfileScreen", sender: self) } this is my datamodel on firebase: 
UPDATE:
i tried this instead:
let profileLblTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(NewsVC.prepareForSegue(_:sender:))) with this function:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "ProfileScreen" { if let cell = sender as? NewsCell, row = tableView.indexPathForCell(cell)?.row, vc = segue.destinationViewController as? ProfileVC { vc.post = posts[row] } } } but that gave me an error on appDelegate: Thread 1: EXC_BAD_ACCESS(code=1, address = 0x1)
prepareForSegue?