NSDateFormatter expects NSCalendarDate instances as its "object value", and formats them to a string for display. Going the other way, it takes a string from the user and creates an NSCalendarDate instance to be stored in the underlying model. So, in your objectValueForTableColumn: method, return an NSCalendarDate instance, and in setObject:forTableColumn:, expect an NSCalendarDate instance to be passed to you, not a string.