+1  A: 

This is more of a application design question than anything else. The way I see it with what you have, you're going to need a "long switch statement" somewhere. Maybe the cleanest way would be in a message you send yourself with a signature like:

- (ABPropertyID)recordPropertyFromMyEnum:(MyEnumType)property

Consider this: if the only enumerations you have line up one-for-one with an ABPropertyID, why not just use ABPropertyID instead?

greg
Because the properties are human-readable at some point before the data reaches me. I'm parsing contact lists on paper that have fields like "First Name" and "Job Title". I need to be able to resolve those into a Cocoa `kABPerson...Property`. It seems inefficient to do a big Switch statement, although you may be right; that may be the only way.
Andrew