Проверка равенства данных RTFD - PullRequest
1 голос
/ 16 декабря 2011

Я использую приведенную ниже функцию для установки новых данных 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

...