1""" 2This adds some usefull conveniences to NSManagedObject and subclasses thereof 3 4These conveniences try to enable KVO by default on NSManagedObject instances, 5this no longer works on Leopard due to the way NSManagedObject is implemented 6there (it generates accessor methods at runtime, which interferes with the 7implementation in this file). 8""" 9__all__ = () 10from objc import addConvenienceForClass 11from Foundation import NSObject 12 13def NSMOsetValue_ForKey_(self, name, value): 14 try: 15 if '__objc_python_subclass__' in self.__class__.__dict__: 16 super(self.__class__, self).setValue_forKey_(value, name) 17 else: 18 self.setValue_forKey_(value, name) 19 20 except KeyError as msg: 21 NSObject.__setattr__(self, name, value) 22 23 24def NSMOgetValueForKey_(self, name): 25 try: 26 if '__objc_python_subclass__' in self.__class__.__dict__: 27 return super(self.__class__, self).valueForKey_(name) 28 else: 29 return self.valueForKey_(name) 30 31 except KeyError as msg: 32 raise AttributeError(name) 33 34addConvenienceForClass('NSManagedObject', ( 35 ('__setattr__', NSMOsetValue_ForKey_), 36 ('__getattr__', NSMOgetValueForKey_), 37)) 38