Comments (3)
Grrrr.. XCode 6.3 fools me again! I'll update this later with a screencast compiled from XCode 6.2. 6.3 isn't auto-sizing table cells correctly.
from twitter.
👍 nice work. With this assignment, we've now explored all the main patterns for building MVC clients! If this were 2009, you would be well on your way to building most apps that you could find in the app store. Over the next few weeks, we'll be focusing on custom views and view controllers to implement the interactions and visual effects that we find in more modern iOS apps.
Here's a checklist of things that I'm looking for in this project. You should review the checklist, and make any changes to your project, if necessary.
- missing .gitignore file
- In Objective-C, review your .h files. Your classes should reveal a minimum interface and only expose things that must be used by other classes.
- Each .xib file or Storyboard scene should have Auto Layout constraints specified for each view.
- There should be no yellow Auto Layout warnings, even if the layout seems to work. Auto Layout warnings are like having bad HTML. The browser will try to render it, and it might even look right, but it won't be fully predictable.
- In your custom TweetCell, there is a conditionally present label that starts with "retweeted by ...". Did you create an outlet for that constraint and programatically modify the constant depending if the label is present or hidden?
- Did you handle reply/retweet/favorite actions from within the TweetCell? This is an example where it's useful for your model to be able to handle network actions, so you can simply wire up the buttons to a method like
[tweet retweet]
(Objective-C) ortweet.retweet()
(Swift). You can even pass in an optional closure if you want to handle a failure of the network event. - If you're using Objective-C, you can consider using Mantle, a lightweight ORM that eliminates a lot of boilerplate. It's also compatible with Core Data if your project requires that.
- If you're using Swift, you can consider using SwiftyJSON for easier deserialization of the JSON response.
- In your ComposeViewController, did you pass back the Tweet after it was successfully created? This will allow you to locally insert newly created tweets so you don't have to do a network refresh to see the new tweets.
--dirk
from twitter.
👍 nice work. The point of this homework was to explore a simple example of a full MVC application with a RESTful API. For each point in the homework feedback checklist, I'll either confirm that you're on the right track with the implementation, or I'll provide some feedback:
- Nice work encapsulating the properties into the private class extension for better encapsulation.
- Good coding style for the properties. The compiler generates important things in the getters and setters that get circumvented when the instance variables are used directly (the variables that are prefixed with underscore). Always use self.property to access a property.
- Nice work specifying the Auto Layout constraints.
- Note that you should try handling the conditionally present retweet label in the cells. This is a situation where its not possible to specify the behavior that you want solely using Interface Builder.
- Nice work setting up the controls within the Tweet cells. It can sometimes be hard to have a clean design for embedded controls because it usually involves cumbersome plumbing. This is an instance where I think having the model handle the network action helps greatly simplify the implementation.
- You should consider using Mantle, it's a lightweight ORM that eliminates a lot of boilerplate, and it's also compatible with Core Data if your project requires that.
- You should try implementing the post tweet insertion into the feed. In real MVC apps, the more polished experiences have to do a certain amount of local object management to make a fully seamless experience.
In general, you should challenge yourself to create visually polished applications. That's where you'll find all the rough edges of the iOS framework and earn the next level of mastery.
-- dirk
from twitter.
Related Issues (2)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from twitter.