Great tutorial! I did find a minor error under “Binding Text Fields to Their Properties”. Where you write “The Controller Key should be objectValue.trackName.” I think Controller Key should be Model Key Path. That tripped me up for a bit.
In general, you should use will/didChangeValueForKey if you are going to affect a value in-directly, for example if you have a Class Student and it has firstName, lastName and fullName where fullName is getting and setting in firstName and lastName, then on changing firstName or lastName you should call will/didChangeValueForKey fullName