GameNight is a social networking app that allows board-game enthusiasts to connect with one another, schedule meetups, and grab information on board games.
Required Must-have Stories
Optional Nice-to-have Stories
Tab Navigation (Tab to Screen)
Flow Navigation (Screen to Screen)
[Add picture of your hand sketched wireframes in this section]
User Object
Session Object
Game Object
Comment Object
Login Screen
let username = usernameField.text!
let password = passwordField.text!
PFUser.logInWithUsername(inBackground: username, password: password) { (user, error) in if user != nil { self.performSegue(withIdentifier: "loginSegue", sender: nil) } else { print("Error: (error?.localizedDescription)") } }
* (Sign-Up): Query User database for non-existing username, and create a new user before logging in
```swift
let user = PFUser()
user.username = usernameField.text
user.password = passwordField.text
user.signUpInBackground { (success, error) in
if success {
self.performSegue(withIdentifier: "loginSegue", sender: nil)
} else {
print("Error: \(error?.localizedDescription)")
}
}
Scrolling Screen to Find Upcoming Meetups
let query = PFQuery(className:"MeetupPost")
query.whereKey("date", greaterThanorEqualTo: currentDate)
query.order(byDescending: "createdAt")
query.findObjectsInBackground { meetupPosts: [PFObject]?, error: Error?) in
if let error = error {
print(error.localizedDescrption)
} else if let meetupPosts = meetupPosts {
print("Successfully retrieved \(posts.count) post.")
/*Set labels in swift to be equal to data retrieved from the query */
}
}
Meetup Description Screen
(Create/POST): Create a new comment // create the comment
let comment = PFObject(className: "Comments")
comment["text"] = text
comment["post"] = selectedPost
comment["author"] = PFUser.current()!
selectedPost.add(comment, forKey: "comments")
selectedPost.saveInBackground{ (success, error) in
if success {
print("Comment saved.")
} else {
print("Comment not saved, error occurred.")
}
}
tableView.reloadData()
// clear and dismiss the input bar
commentBar.inputTextView.text = nil
showsCommentBar = false
becomeFirstResponder()
commentBar.inputTextView.resignFirstResponder()
Meetup Creation Screen
let meetup = PFObject(className: "Sessions")
let new_date = Date.init()
meetup["title"] = title.text meetup["typeOfBoardGame"] = genre.text meetup["author"] = PFUser.current()! meetup["description"] = description.text meetup["startDate"] = startDate.text meetup["endDate"] = endDate.text meetup["createdAtDate"] = new_date meetup["updatedAtDate"] = new_date
sessions.saveInBackground{ (success, error) in if success { print("Meetup saved.") } else { print("Meetup not saved, error occurred.") } }
Scrolling Screen to find Board Games
(READ/GET): Query all board games in the database
let query = PFQuery(className: "boardGames")
query.includeKeys(["title"])
query.limit = 50
query.findObjectsInBackground{ (posts, error) in
if games != nil {
self.games = games!
self.tableView.reloadData()
}
}
Board Game Description Screen
var query = PFQuery(className:"gameObject")
var gameObject = query.getObjectInBackgroundWithId("ObjectID")
User Scrolling Screen
var query = PFQuery(className:"user")
var currUser = query.getObjectInBackgroundWithId("userID")
var name = currUser["username"]
var profileImage = currUser["image"]
User Profile Screen
var query = PFQuery(className:"user")
var currUser = query.getObjectInBackgroundWithId("userID")
User Edit Profile Screen
Message Screen (nice to have but not necessary)