2010-10-05 19 views

Respuesta

14

Usted puede tratar con esto:

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

gracias, no funciona, ¿podría ver la publicación editada? –

+0

Espera, ¿cuál es tu textView? ¿Cuál es tu texto ?, parece que tu nombre de variable tiene problemas. ¿Puedes imprimir el NSString después de obtener de '[NSString stringWithContentsOfFile ...]'. Quiero ver los resultados allí – vodkhang

+0

myText es 'UITextView' y 'myTextView' es solo un nombre, mi archivo es un archivo txt con UTF8 Encoding. –

8

Lo que has hecho hasta ahora le dará el nombre del archivo, es necesario dar un paso más y, de hecho leer el contenido del archivo en una NSString, usando algo como:

NSError *err = nil; 
NSString *fileContents = [NSString stringWithContentsOfFile:filePath 
          encoding:NSUTF8StringEncoding 
          error:&err]; 
if (fileContents == nil) { 
    NSLog("Error reading %@: %@", filePath, err); 
} else { 
    myTextView.text = fileContents; 
} 

que funcione para texto plano (asumiendo que su archivo está en la codificación UTF-8); Tendrás que hacer algo mucho más elegante para RTF (UITextView no sabe cómo mostrar RTF).

+0

gracias, no funciona, ¿podría ver la publicación editada? –

+3

Si no funciona, tal vez deberías verificar el estado del error (en lugar de ignorarlo pasando 'nil'). –

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

Formato ligeramente extraño, pero funciona para cargar un archivo de texto enriquecido y configurar la propiedad 'attributeText' de' UITextView'. – Dalmazio

+0

Esto funciona, pero como ejemplo promueve malas prácticas. Usar la sintaxis de punto para llamar a 'alloc' es confuso en el mejor de los casos, y un mal uso de la sintaxis de punto en el peor. No seguir las convenciones estándar de alineación de parámetros de líneas múltiples hace que sea difícil de leer. – SwampThingTom

+0

¿Vale la pena disminuir mi reputación? Usted dogmático. – Satachito

0
  1. Arrastre el control de Vista de Texto (que tenía que hacer clic 3 veces hasta que dijo NSTextView) a su archivo AppDelegate.m debajo de la primera línea de @interface. El mío fue @interface AppDelegate(). El motivo de los tres clics se debe a que, de forma predeterminada, cuando arrastra un control TextView en una ventana, crea 3 controles y solo el interior, interno, está establecido en NSTextView. Los otros controles se ocupan del desplazamiento y del recorte de pantalla. Luego, elija crear una salida y asígnele un nombre como txtRich o lo que quiera. Esto creó esta entrada para mí en mi caso:
@property (unsafe_unretained) IBOutlet NSTextView *txtRich;
  1. encontrar un método de clase en la que desea cargar el RTFD. Hice el mío en AppDelegate.m bajo applicationDidFinishLaunching. Dentro de eso, pegar algo como esto:
NSBundle *myBundle = [NSBundle mainBundle]; 
NSString *sFile= [myBundle pathForResource:@"myrichfile" ofType:@"rtfd"]; 
[self.txtRich readRTFDFromFile:sFile]; 

Usted se estará preguntando donde esta mainBundle viene, y si tiene que declarar en alguna parte. La respuesta es no. Es una maldita magia, creada de manera predeterminada, al igual que la variable NSNotificationCenter defaultCenter. Se refiere a su propio paquete de aplicaciones.

  1. Ahora, use TextEdit para crear un archivo myrichfile.rtfd. Guárdalo en tu carpeta de proyectos. Arrástrelo a la ventana de su proyecto debajo de los Archivos de Soporte. Cuando se le solicite, vaya con los valores predeterminados. Esto lo combina con su proyecto en una carpeta de Recursos.
Cuestiones relacionadas