Code Monkey home page Code Monkey logo

Comments (3)

apfritts avatar apfritts commented on July 20, 2024

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.

codepathreview avatar codepathreview commented on July 20, 2024

👍 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) or tweet.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.

codepathreview avatar codepathreview commented on July 20, 2024

👍 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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.