There are two bugs in XCode 8 here:
1 – If you change the Codegen dropdown, it’s new value isn’t saved in Model.xcdatamodel. You have to change something else to get it to save. For example change the class name; build; change the class name back; build again.
2 – The generated code is placed in DerivedData in the Intermediates folder, but it only happens if the folder doesn’t already exist. The workaround is to do a clean then a build.