简体   繁体   中英

How to find the text in an NSTextView?

I need to find the text in an NSTextView , and save it to a file. I can do the saving fine. I have used -stringValue , and -textStorage so far, but neither have worked. When I put -stringValue in, it just gave me (null), and when I put -textStorage in, it gave me a very large chunk of nothing (like a long paragraph of invisible text).

How can I put the text from an NSTextView into an NSString ?

Try

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

The NSTextStorage inherits from NSMutableAttributedString which inherits from NSAttributedString . The latter implements the string method.

This isn't too obvious if you just look at the NSTextView's instance methods in the documentation.

Try this:

[myTextView string];

If you are struggling to write the textView stringValue into a file try something like this:

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

Hope this helps!

when setting value, use text.string = @"XXXX";
when getting value, use STRING = [text.string copy];

because if you forget copy, the mutableString will be deliver to STRING . This will raise bugs when you editing multiple things with a single textview .

In order to compile all of the information for anyone else with this question, I am answering my own question. If I am not allowed to do this, please tell me.

The code is actually extremely simple.

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];
}

Instead of voting this up, vote for the other two people that answered this.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM