我和
Cocoa合作的第二天.我已经设置了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;
任何想法如何让我的managedObject的NSString属性显示在NSTextView中?
解决方法
您可以使用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
警告Emptor – 这可能是倒置的,反向器可能会泄漏.我现在就做了,但它应该指向正确的方向.如果错误,请让我知道并纠正错误的答案.
您可以在绑定面板中键入类名XXStringTransformer或以编程方式执行.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。