Я создаю приложение на основе теста, чтобы узнать больше о том, как они работают. Я хочу загрузить массив, который я сохранил ранее.Невозможно изменить stringValue из метки в классе Document (приложение на основе документов, Mac)
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
{
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSArray *array = [string componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
documentTitle.stringValue = [array objectAtIndex:0];
// For testing
NSLog(@"%@", array);
}
Я загрузил файл и получил данные. Я преобразовал данные в NSString. Файл имеет несколько строк, и каждая строка имеет собственное значение. Первая строка - это название документа. Поэтому я создал NSArray, который помещает каждую строку отдельно в массив. Затем я установил первую строку документа на ярлык documentTitle. В целях тестирования я также создал функцию NSLog. Он должен регистрировать массив.
Проблема в том, что когда я запускаю код, он ничего не делает. DocumentTitle.stringValue не изменяется. Но самое странное, что это войти в массив:
2015-09-22 16:57:40.098 DocBased Test[10765:277445]
(
"The awesome title!",
"This is a document!"
)
Я объявленную DocumentTitle в Document.h так:
#import <Cocoa/Cocoa.h>
@interface Document : NSDocument
{
IBOutlet NSTextField *documentTitle;
}
@end
Если вам необходимо просмотреть проект в Xcode здесь ссылка: The link.
Кто-нибудь знает, как изменить stringValue метки документа (или любой) в поле Документ класс?
Не могли бы вы установить контрольную точку на линии с: 'documentTitle.stringValue' и гарантировать, что' documentTitle' ссылается на объект, а не 'nil'? –
@A O Вы правы. Объект ** documentTitle ** равен нулю. Можешь мне сказать почему? Я никогда не видел этого раньше. – Developer
Тогда идеальное, простое решение. Не могли бы вы разместить строку, в которой вы объявляете '@property documentTitle'? Это «IBOutlet»? –