How do you know?


Just a general inquiry. How in the world do you know that things like “tableView:setObjectValue:forTableColumn:row:” exist? It took me forever to find this. I didn’t see anything useful in the header definition for NSTableView, and looking through the class definition was fruitless. I finally found this in the NSTableViewDataSource Protocol Reference, which was the second to last thing listed when option-clicking on NSTableview. I feel like I must be missing something since it took me so long to locate this method.


In addition to the class references, make sure you also check out the companion guides that apply to any class in which you are interested. They are a great tool for exploring the use of your favorite (and least favorite) classes.

For example, in the class reference for NSTableView, there is a reference to the Table View Programming Guide and Drag and Drop Programming Topics. In the Table View Programming Guide, there is a chapter called “Populating Cell-Based Table Views” where the method in question can be found.

These programming guides exist throughout the documentation and are often a very valuable reference. Don’t forget to check the sample code as well, but I tend to prefer the Programming Guides when I want more information on a class than what is covered in the class reference overview.


Additionally, in Ch. 6, when putting together the enhanced SpeakLine app, the books says (or hints) to add NSTableViewDelegate to SpeakLineAppDelegate.h; doing this alone would not bring up the prototype for tableView:objectValueForTableColumn:row: in the Interface Builder editor’s completion feature. I had to also add NSTableViewDataSource to the protocol list to get this to happen.

As a corollary, I am learning that if IB’s editor does not automatically suggest the completion of the method name I am beginning to type, probably a protocol entry is missing in the corresponding header file.