2010-10-05 18 views
9

हाय में मैं सोच रहा था मैं कैसे UITextView में rtf या पाठ फ़ाइल लोड करना चाहिए मैं कई कोड का उपयोग लेकिन काम नहीं समझे,लोड rtf या पाठ फ़ाइल UITextView iPhone SDK

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

धन्यवाद।

उत्तर

14

आप इस के साथ की कोशिश कर सकते हैं:

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

धन्यवाद, आप काम नहीं करते हैं, क्या आप संपादित पोस्ट देखेंगे? –

+0

रुको, आपका टेक्स्ट व्यू क्या है, आपका टेक्स्ट क्या है, ऐसा लगता है कि आपके परिवर्तनीय नाम में समस्याएं हैं। क्या आप '[NSString stringWithContentsOfFile ...] 'से प्राप्त होने के बाद NSString प्रिंट कर सकते हैं। मैं वहां परिणाम देखना चाहता हूं – vodkhang

+0

myText 'UITextView' और 'myTextView' सिर्फ एक नाम है, मेरी फ़ाइल यूटीएफ 8 एन्कोडिंग के साथ एक txt फ़ाइल है। –

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 एन्कोडिंग में है); आपको आरटीएफ के लिए कुछ फैनसीयर करना होगा (यूआईटीएक्स्टव्यू को आरटीएफ को प्रदर्शित करने का तरीका नहीं पता है)।

+0

धन्यवाद, काम नहीं करता है, क्या आप संपादित पोस्ट देखेंगे? –

+3

यदि यह काम नहीं कर रहा है, तो आपको त्रुटि स्थिति की जांच करनी चाहिए ('nil' पास करके इसे अनदेखा करने के बजाय)। –

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

थोड़ा अजीब स्वरूपण, लेकिन यह एक समृद्ध टेक्स्ट फ़ाइल लोड करने और 'UITextView' की 'विशेषताकृत टेक्स्ट' सेटिंग सेट करने के लिए काम करता है। – Dalmazio

+0

यह काम करता है लेकिन एक उदाहरण के रूप में यह बुरे प्रथाओं को बढ़ावा देता है। 'Alloc' को कॉल करने के लिए डॉट सिंटैक्स का उपयोग करना सबसे अच्छा है, और सबसे खराब पर डॉट सिंटैक्स का दुरुपयोग है। मानक मल्टीलाइन पैरामीटर संरेखण सम्मेलनों का पालन नहीं करना इसे पढ़ने में मुश्किल बनाता है। – SwampThingTom

+0

क्या यह मेरी प्रतिष्ठा को कम करने के लायक है? आप dogmatist। – Satachito

0
  1. खींचें अपने TextView नियंत्रण (मैं जब तक यह NSTextView कहा क्लिक करने के लिए 3 बार किया था) पहले @interface लाइन के नीचे अपनी AppDelegate.m फ़ाइल करने के लिए। मेरा @interface AppDelegate() था। तीन क्लिक का कारण यह है कि डिफ़ॉल्ट रूप से जब आप किसी विंडो पर टेक्स्टव्यू नियंत्रण खींचते हैं, तो यह 3 नियंत्रण बनाता है और यह केवल आंतरिक, आंतरिक है जो NSTextView पर सेट होता है। अन्य नियंत्रण स्क्रॉलिंग और स्क्रीन क्लिपिंग के साथ सौदा करते हैं। फिर, आउटलेट बनाने का चयन करें और इसे txtRich या जो कुछ भी आप चाहते हैं उसका नाम दें। यह मेरे मामले में मेरे लिए इस प्रविष्टि बनाया:
@property (unsafe_unretained) IBOutlet NSTextView *txtRich;
  1. एक वर्ग पद्धति जहां आप RTFD लोड करना चाहते हैं। मैंने AppDelegate.m में applicationDidFinishLaunching के तहत मेरा किया था। कि अंदर, कुछ इस तरह पेस्ट:
NSBundle *myBundle = [NSBundle mainBundle]; 
NSString *sFile= [myBundle pathForResource:@"myrichfile" ofType:@"rtfd"]; 
[self.txtRich readRTFDFromFile:sFile]; 

आप सोच रहे हैं, जहां इस mainBundle से आता है, और यह कहीं घोषित करने के लिए अगर आपके पास। जवाब न है। यह फ्रेकिंग जादू है, जिसे डिफ़ॉल्ट रूप से बनाया गया है, बस NSNotificationCenter defaultCenter चर की तरह। यह आपके अपने आवेदन बंडल को संदर्भित करता है।

  1. अब, myrichfile.rtfd फ़ाइल बनाने के लिए TextEdit का उपयोग करें। इसे अपने प्रोजेक्ट फ़ोल्डर में सहेजें। इसे सहायक फ़ाइलों के तहत अपनी प्रोजेक्ट विंडो पर खींचें। जब आपको संकेत मिले, तो डिफ़ॉल्ट के साथ जाएं। यह संसाधन प्रोजेक्ट में आपकी प्रोजेक्ट के साथ इसे बंडल करता है।
संबंधित मुद्दे