Я использую приведенную ниже функцию для установки новых данных rtfd на атрибут типа двоичный в основном объекте данных.
Если он не равен, тогда я устанавливаю данные вуправляемый объект.
Проблема здесь в том, что равенство работает только тогда, когда данные rtfd представляют собой только текст.Когда есть прикрепленные изображения, этот метод возвращает ложь.
-(BOOL)setRTFData:(NSData*)data forKey:(NSString*)key
{
NSData *actualData = [self getDataValueForKey:key];
NSDictionary *dict = nil;
NSAttributedString *actualAttribString = [[NSAttributedString alloc] initWithRTFD:actualData documentAttributes:&dict];
NSAttributedString *newAttribString = [[NSAttributedString alloc] initWithRTFD:data documentAttributes:&dict];
BOOL isEqual = [actualAttribString isEqualToAttributedString:newAttribString];
[actualAttribString release];
[newAttribString release];
if (!isEqual)
{
[self willChangeValueForKey:key];
[self setPrimitiveValue:data forKey:key];
[self didChangeValueForKey:key];
return TRUE;
}
return FALSE;
}
Вот так я получаю свои * данные rtfd * от NSTextView
:
NSData* data = [notesTextField RTFDFromRange:NSMakeRange(0,[[notesTextField textStorage] length])];
Я использую SDK 10,7