将rtf或文本文件加载到UITextView iphone sdk中

时间:2010-10-05 15:44:40

标签: iphone sdk ios4

您好我想知道如何将rtf或文本文件加载到UITextView中我使用了几个代码但是没有用,

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

4 个答案:

答案 0 :(得分:14)

你可以试试这个:

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

答案 1 :(得分:9)

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

答案 2 :(得分: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)。

答案 3 :(得分:0)

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

      您可能想知道这个mainBundle来自何处,以及您是否必须在某处声明它。答案是不。它是一种疯狂的魔法,默认创建,就像NSNotificationCenter defaultCenter变量一样。它指的是您自己的应用程序包。

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