Загрузить RTF или текстовый файл в UITextView iphone SDK - PullRequest
9 голосов
/ 05 октября 2010

Привет, мне было интересно, как мне загрузить rtf или текстовый файл в UITextView, я использую несколько кодов, но не сработал,

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"txt"];
myTextView.text = filePath;

спасибо.

Ответы [ 4 ]

15 голосов
/ 05 октября 2010

Вы можете попробовать это:

NSString *myText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
myTextView.text  = myText;
9 голосов
/ 23 апреля 2014
myTextView.attributedText =
[   NSAttributedString.alloc
    initWithFileURL:[ NSBundle.mainBundle URLForResource:@"filename" withExtension:@"rtf"  ]
    options:nil
    documentAttributes:nil
    error:nullptr
];
8 голосов
/ 05 октября 2010

То, что вы сделали до сих пор, даст вам имя файла, вам нужно сделать еще один шаг и фактически прочитать содержимое файла в строку NSString, используя что-то вроде:

NSError *err = nil;
NSString *fileContents = [NSString stringWithContentsOfFile:filePath 
                           encoding:NSUTF8StringEncoding
                           error:&err];
if (fileContents == nil) {
    NSLog("Error reading %@: %@", filePath, err);
} else {
    myTextView.text = fileContents;
}

Это будет работать для простого текста (при условии, что ваш файл в кодировке UTF8); вам нужно будет сделать что-то более изворотливое для RTF (UITextView не знает, как отображать RTF).

0 голосов
/ 01 декабря 2015
  1. Перетащите ваш элемент управления TextView (мне приходилось нажимать 3 раза, пока он не сказал NSTextView) в файл AppDelegate.m под первой строкой @interface.Мой был @interface AppDelegate ().Причина трех щелчков заключается в том, что по умолчанию, когда вы перетаскиваете элемент управления TextView в окно, он создает 3 элемента управления, и только внутренний, внутренний устанавливается на NSTextView.Другие элементы управления имеют дело с прокруткой и отсечением экрана.Затем выберите создание торговой точки и назовите ее как txtRich или как хотите.Это создало эту запись для меня в моем случае:
@property (unsafe_unretained) IBOutlet NSTextView *txtRich;
Найдите метод класса, в который вы хотите загрузить RTFD.Я сделал мой в AppDelegate.m под applicationDidFinishLaunching.Внутри этого вставьте что-то вроде этого:
NSBundle *myBundle = [NSBundle mainBundle];
NSString *sFile= [myBundle pathForResource:@"myrichfile" ofType:@"rtfd"];
[self.txtRich readRTFDFromFile:sFile];

Вам может быть интересно, откуда взялся этот mainBundle, и нужно ли вам где-то объявить это.Ответ - нет.Это чудовищная магия, созданная по умолчанию, точно так же, как переменная NSNotificationCenter defaultCenter.Это относится к вашему собственному пакету приложений.

Теперь используйте TextEdit для создания файла myrichfile.rtfd.Сохраните его в папке вашего проекта.Перетащите его в окно вашего проекта под Поддерживающие файлы.Когда вам будет предложено, перейдите с настройками по умолчанию.Это связывает его с вашим проектом в папке ресурсов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...