views:

201

answers:

6

[Distilled from this question, with less informality.]

What are some things a new Cocoa programmer should write as sample projects, outside of the hand-holding of a tutorial?

Let's have one project idea per answer. If you have multiple ideas to suggest, post multiple answers.

It'll help for you to also list what Cocoa concepts your project idea will teach/reinforce.

Also, if your answer addresses Cocoa Touch- or Cocoa (Mac)-specific concepts, please indicate that. This question is for both Cocoa and Cocoa Touch.

+1  A: 

On the Mac, a document-based app. This will establish that Cocoa applications can and will have multiple windows, unlike apps on the iPhone and on certain other platforms.

Peter Hosey
A: 

If you have web development experience, write a search interface to query a remote web service with a JSON response. This was my first project, and got me familiar with IB, table views, singletons, and polling for asynchronous responses with NSTimer.

The open source JSON framework is invaluable: http://code.google.com/p/json-framework/.

Glen
I'd put a caveat on this: Only use asynchronous APIs to do the query. Don't let yourself be lulled by the siren song of the `sendSynchronousRequest…` one-liner. Any use of `sendSynchronousRequest…` should come with a to-do/ticket/FIXME comment reminding you to make it asynchronous later, so as to not hang your app.
Peter Hosey
It's true. Asynchronous requests are a bit more complicated in cocoa, but easy enough to use once you understand NSTimer and selectors.
Glen
A: 

My first toy project was just a data base with two views. One showed the sequential entries, the other allowed addition of entries. This involved using CoreData, a table based view, and an alternate view to enter new data.

Was quite instructive, and of course improved my confidence in developing applications.

Good luck

John R Doner
+2  A: 

Twitter client. It's the new Hello World.

In all seriousness, it does teach a lot of concepts such as service consumption, handling of cached data, presentation of data etc...

rein
+2  A: 

What is something that you need but don't have?

Making something that I'll actually use is something that helps me get more into a project and thus more likely to finish it!

Personally I think a Todo list is a good place to start learning the basics, and once the basics are there you can add things like synchronisation between other things like calendars.

James Raybould
A: 

The character sheet for an RPG of your own making, or one that already exists like Dungeons & Dragons. Great introduction to a wide range of topics like Document-based architecture, bindings, Core Data, and all sorts of fun interface things like tables, text fields, etc.

Colin Barrett