Если вы выполняете вызов несколько раз, вы можете использовать новые дескрипторы методов, введенные в Java 7. Здесь мы переходим к тому, чтобы ваш метод возвращал строку:
Object obj = new Point( 100, 200 );
String methodName = "toString";
Class<String> resultType = String.class;
MethodType mt = MethodType.methodType( resultType );
MethodHandle methodHandle = MethodHandles.lookup().findVirtual( obj.getClass(), methodName, mt );
String result = resultType.cast( methodHandle.invoke( obj ) );
System.out.println( result ); // java.awt.Point[x=100,y=200]
Используя NSTextFields с привязками, Какао использует методы кодирования значения ключа (KVC), такие как setValue:forKey:
. Установки привязок в Storyboard / XIB всегда связаны с объектом подкласса NSObject (контроллером). Необъектные значения обрабатываются специально:
Если ваш объект, совместимый с кодировкой значений ключей, получает сообщение
blockquote>setValue:forKey:
с нулевым значением, переданным в качестве значения для необъектного свойства, реализация по умолчанию не имеет соответствующей Обобщенный курс действий. Поэтому он отправляет себе setNilValueForKey: сообщение, которое вы можете переопределить. Реализация по умолчаниюsetNilValueForKey:
вызывает исключениеNSInvalidArgumentException
, но вы можете обеспечить соответствующее, специфичное для реализации поведение.В вашем случае
OrderFormViewController
не было переопределено setNilValueForKey: метод, и это вызвало исключение.Реализация
setNilValueForKey
: решит все проблемы.PS: использование NSNumberFormatter или привязка к объекту NSNumber также решит проблему.