2010-10-05 40 views

回答

14

你可以试试这个:

NSString *myText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
myTextView.text = myText; 
+0

谢谢你不行,请你看看编辑过的帖子? – 2010-10-05 16:54:00

+0

等一下,你的textView是什么,你的文本是什么,看起来你的变量名有问题。你可以从'[NSString stringWithContentsOfFile ...]''获得后打印出NSString。我想看看结果 – vodkhang 2010-10-05 16:56:05

+0

myText是'UITextView'和'myTextView'只是一个名字,我的文件是一个UTF8编码的txt文件。 – 2010-10-05 17:06:26

8

到目前为止,你所做的事将让你的文件的名称,您需要进一步走一步,实际上读取该文件的内容为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

谢谢你不工作,你会看到编辑过的文章吗? – 2010-10-05 17:00:56

+3

如果它不工作,也许你应该检查错误状态(而不是通过传递'nil'忽略它)。 – 2010-10-05 18:03:11

8
myTextView.attributedText = 
[ NSAttributedString.alloc 
    initWithFileURL:[ NSBundle.mainBundle URLForResource:@"filename" withExtension:@"rtf" ] 
    options:nil 
    documentAttributes:nil 
    error:nullptr 
]; 
+1

格式有点奇怪,但它适用于加载富文本文件并设置“UITextView”的'属性文字'属性。 – Dalmazio 2014-07-29 08:15:25

+0

这是行得通的,但作为一个例子,它会促进不良行为。使用点语法来调用'alloc'最多是令人困惑的,而最坏的情况是滥用点语法。不遵循标准多行参数对齐约定会导致难以阅读。 – SwampThingTom 2015-08-20 23:47:44

+0

是否值得降低我的声誉?你教条主义者。 – Satachito 2015-08-21 22:21:04

0
  1. 将您的TextView控件(我不得不点击3次,直到它说NSTextView)到第一@interface线下面的AppDelegate.m文件。我的是@interface AppDelegate()。三次点击的原因是因为在默认情况下,当您在窗口上拖动TextView控件时,它会创建3个控件,它只是内部的,设置为NSTextView的内部控件。其他控件处理滚动和屏幕裁剪。然后,选择创建一个插座并将其命名为txtRich或任何您想要的。这创造了这个条目我在我的情况:
@property (unsafe_unretained) IBOutlet NSTextView *txtRich;
  • 找到您要加载的RTFD一个类的方法。我在applicationDidFinishLaunching的AppDelegate.m中做过我的工作。这里面,贴这样的:
  • NSBundle *myBundle = [NSBundle mainBundle]; 
    NSString *sFile= [myBundle pathForResource:@"myrichfile" ofType:@"rtfd"]; 
    [self.txtRich readRTFDFromFile:sFile]; 
    

    你可能会想知道这mainBundle来自,如果你有什么地方申报。答案是不。这是惊人的魔法,默认情况下创建,就像NSNotificationCenter defaultCenter变量。它指的是你自己的应用程序包。

    1. 现在,使用TextEdit创建一个文件myrichfile.rtfd。将它保存在你的项目文件夹中。将它拖到支持文件下的项目窗口中。当出现提示时,请使用默认值。这将它与您的项目捆绑在Resources文件夹中。
    相关问题