Как найти текст в NSTextView? - PullRequest
       18

Как найти текст в NSTextView?

19 голосов
/ 04 апреля 2011

Мне нужно найти текст в NSTextView и сохранить его в файл. Я могу сделать экономию в порядке. До сих пор я использовал -stringValue и -textStorage, но ни один из них не работал. Когда я вставил -stringValue, он просто дал мне (ноль), а когда я вставил -textStorage, он дал мне очень большой кусок ничего (как длинный абзац невидимого текста).

Как я могу поместить текст из NSTextView в NSString?

Ответы [ 4 ]

37 голосов
/ 04 апреля 2011

Попробуйте

NSString *text = [[myTextView textStorage] string];

NSTextStorage наследуется от NSMutableAttributedString , который наследуется от NSAttributedString . Последний реализует метод string .

Это не слишком очевидно, если вы просто посмотрите на методы экземпляра NSTextView в документации.

3 голосов
/ 04 апреля 2011

Попробуйте это:

[myTextView string];

Если вы пытаетесь записать textView stringValue в файл, попробуйте что-то вроде этого:

    [[myTextView string] writeToFile:@"someFile" atomically:YES encoding:NSUnicodeStringEncoding error:&error];

Надеюсь, это поможет!

1 голос
/ 04 марта 2014

при установке значения используйте text.string = @"XXXX";
при получении значения используйте STRING = [text.string copy];

потому что, если вы забудете скопировать, mutableString будет доставлен до STRING. Это вызовет ошибки при редактировании нескольких вещей с помощью одного textview.

0 голосов
/ 04 апреля 2011

Чтобы собрать всю информацию для кого-либо еще с этим вопросом, я отвечаю на свой вопрос. Если мне не разрешено это делать, скажите, пожалуйста.

Код на самом деле очень прост.

Files.h

#import <Cocoa/Cocoa.h>

@interface Files : NSObject {
    IBOutlet id dataToSave;
}

- (IBAction) saveData: (id) sender;

Files.m

@implementation Files

- (IBAction) saveData: (id) sender; {
    NSString *text = [[dataToSave  textStorage] string];
    NSLog(@"%@", text);
    [text writeToFile:@"Users/justin/Desktop/test.txt atomically:YES encoding:NSUTF8StringEncoding error:NULL];
}

Вместо того, чтобы голосовать, проголосуйте за двух других людей, которые ответили на это.

...