Herr Bischoff


macOS Contacts.app vs. mutt

Since installing macOS 10.12.2, I got some weird verbose warnings when using contacts in Mutt to complete email addresses:

[...]
CoreData: warning: dynamic accessors failed to find @property implementation for 'uniqueId' for entity ABCDInfo while resolving selector 'uniqueId' on class 'ABCDInfo'.  Did you remember to declare it @dynamic or @synthesized in the @implementation ?
CoreData: warning: dynamic accessors failed to find @property implementation for 'uniqueId' for entity ABCDContact while resolving selector 'uniqueId' on class 'ABCDContact'.  Did you remember to declare it @dynamic or @synthesized in the @implementation ?
CoreData: warning: dynamic accessors failed to find @property implementation for 'uniqueId' for entity ABCDPhoneNumber while resolving selector 'uniqueId' on class 'ABCDPhoneNumber'.  Did you remember to declare it @dynamic or @synthesized in the @implementation ?
CoreData: warning: dynamic accessors failed to find @property implementation for 'fullNumber' for entity ABCDPhoneNumber while resolving selector 'fullNumber' on class 'ABCDPhoneNumber'.  Did you remember to declare it @dynamic or @synthesized in the @implementation ?
CoreData: warning: dynamic accessors failed to find @property implementation for 'label' for entity ABCDPhoneNumber while resolving selector 'label' on class 'ABCDPhoneNumber'.  Did you remember to declare it @dynamic or @synthesized in the @implementation ?
CoreData: warning: dynamic accessors failed to find @property implementation for 'isPrimary' for entity ABCDPhoneNumber while resolving selector 'isPrimary' on class 'ABCDPhoneNumber'.  Did you remember to declare it @dynamic or @synthesized in the @implementation ?
CoreData: warning: dynamic accessors failed to find @property implementation for 'orderingIndex' for entity ABCDPhoneNumber while resolving selector 'orderingIndex' on class 'ABCDPhoneNumber'.  Did you remember to declare it @dynamic or @synthesized in the @implementation ?
[...]

These warning messages completely mess up the address selection in Mutt. Since I could not find anything relating to this behaviour on the internet, I implemented a quick work-around. Just set the query_command in your .muttrc from something like

set query_command = "contacts -Sf '%eTOKEN%n' '%s' | sed -e 's/TOKEN/\t/g'"

to

set query_command = "contacts -Sf '%eTOKEN%n' '%s' 2>&1 | grep -v CoreData | sed -e 's/TOKEN/\t/g'"

It simply redirects stderr to stdout and filters all lines containing “CoreData”.