NSTextView, привязки и отображение строки NSString - PullRequest
8 голосов
/ 25 сентября 2011

Мой второй день работы с какао. У меня настроен NSTextView, его атрибутная строка привязана к NSArrayController (я использую Core Data):

controller key: selection
model key path: myString

Я читал, что NSTextView нужен NSAttributedString, поэтому он выдает исключение при попытке установить значение атрибута.

NSInvalidArgumentException', reason: 'Unacceptable type of value for attribute: property = "myString"; desired type = NSString; given type = NSConcreteAttributedString; 

Есть какие-нибудь идеи, как я могу получить атрибут NSString моего управляемого объекта в NSTextView?

Ответы [ 2 ]

17 голосов
/ 09 августа 2012

Вы можете привязать свою строку NSString к NSTextView value вместо attributedString.Для этого вам нужно отключить «Rich Text» для NSTextView.

4 голосов
/ 25 сентября 2011

Вы можете использовать подкласс NSValueTransformer для перемещения вперед и назад

@interface XXStringTransformer: NSValueTransformer {}
@end

@implementation XXStringTransformer
+ (Class)transformedValueClass 
{   
    return [NSAttributedString class]; 
}
+ (BOOL)allowsReverseTransformation 
{ 
    return YES; 
}
- (id)transformedValue:(id)value 
{
    return (value == nil) ? nil : [[[NSAttributedString alloc] initWithString:value] autorelease];
}

- (id)reverseTransformedValue:(id)value
{
    return (value == nil) ? nil : [[(NSAttributedString *)value string] copy];
}

@end

Caveat Emptor - Это может быть вверх ногами, и реверсор может протечь. Я только что сделал это сейчас, но это должно указать вам в правильном направлении. Дайте мне знать, и я неправильно исправлю ответ, если он неправильный.

Вы можете ввести имя класса XXStringTransformer в панель привязки или сделать это программно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...