2011-04-03 77 views
19

我需要找到NSTextView中的文本,并将其保存到文件中。我可以保存好。到目前为止,我已经使用-stringValue-textStorage,但都没有工作。当我放入-stringValue时,它只给了我(null),当我放入-textStorage时,它给了我一大堆没有任何东西的东西(比如一段看不见的文字)。如何在NSTextView中查找文本?

如何将NSTextView的文本转换为NSString

回答

35

尝试

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

的NSTextStorage从NSMutableAttributedStringNSAttributedString继承继承。后者实现了string方法。

如果您只是在文档中查看NSTextView的实例方法,这并不太明显。

+0

什么都没有发生。我只是得到一个“隐形段落”。编辑:我做了一个'NSLog',它显示了正确的字符串。我保存的文件没有显示任何内容,只是我提到的那个“大型隐形段落”。现在怎么办? – Justin 2011-04-03 21:25:58

+0

如何进入磁盘?你是否尝试过使用utf8编码? – 2011-04-03 21:40:41

+0

是的,我试过编码utf8。 – Justin 2011-04-03 23:18:55

3

试试这个:

[myTextView string]; 

如果你正在努力TextView的stringValue的写入文件尝试是这样的:

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

希望这有助于!

+0

我已经尝试过。我开始认为我在其他地方犯了一个错误,但我想不出任何可能导致这种情况的事情。编辑:我只是做了一个快速扫描,我发现了这个问题。我保存了很多不同的东西,并且在我的'-stringWithFormat'部分中忘记了一个“%@”。 – Justin 2011-04-03 23:19:44

0

为了编译这个问题的其他人的所有信息,我回答了我自己的问题。如果我不被允许这样做,请告诉我。

该代码实际上非常简单。

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

相反投票这件事,投票给回答了这个其他两个人。

1

设定值时,使用text.string = @"XXXX";
获得价值时,使用STRING = [text.string copy];

,因为如果你忘记复印件,mutableString将被交付给STRING。当你用一个textview编辑多个东西时,这会引发错误。