NSTextField должен удваиваться в Swift, как разрешить пустое?

Если вы выполняете вызов несколько раз, вы можете использовать новые дескрипторы методов, введенные в 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]
0
задан Marek H 10 March 2019 в 08:57
поделиться

1 ответ

Используя NSTextFields с привязками, Какао использует методы кодирования значения ключа (KVC), такие как setValue:forKey:. Установки привязок в Storyboard / XIB всегда связаны с объектом подкласса NSObject (контроллером). Необъектные значения обрабатываются специально:

Если ваш объект, совместимый с кодировкой значений ключей, получает сообщение setValue:forKey: с нулевым значением, переданным в качестве значения для необъектного свойства, реализация по умолчанию не имеет соответствующей Обобщенный курс действий. Поэтому он отправляет себе setNilValueForKey: сообщение, которое вы можете переопределить. Реализация по умолчанию setNilValueForKey: вызывает исключение NSInvalidArgumentException, но вы можете обеспечить соответствующее, специфичное для реализации поведение.

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/KeyValueCoding/HandlingNon-ObjectValues.html#//apple_ref/doc/uid/10000107i-CH5- SW1

В вашем случае OrderFormViewController не было переопределено setNilValueForKey: метод, и это вызвало исключение.

Реализация setNilValueForKey: решит все проблемы.

PS: использование NSNumberFormatter или привязка к объекту NSNumber также решит проблему.

0
ответ дан Marek H 10 March 2019 в 08:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: