2013-01-08 18 views
5

के लिए उद्देश्य-सी में फ़ाइल पॉइंटर्स का उपयोग करना मैं एक आईओएस एप्लिकेशन में लाइब्रेरी (cfitsio) का उपयोग करने की कोशिश कर रहा हूं जो डेटा फ़ाइल तक पहुंच खोलने और बनाए रखने के लिए फ़ाइल सूचक का उपयोग करने पर निर्भर करता है। मैंने सफलतापूर्वक एक उद्देश्य-सी मैक ऐप बनाया है जो मुझे आईओएस पर करने की ज़रूरत है। कोको स्पर्श में एनएसडीटा में फ़ाइल लोड करने के तरीके हैं लेकिन आईओएस पर फाइल सिस्टम के आसपास कठोर गोपनीयता के कारण शायद मुझे फ़ाइल पॉइंटर सीधे प्राप्त करने के लिए नहीं दिखाई देता है। पुस्तकालय के साथ अस्थायी उपयोग के लिए फ़ाइल सूचक बनाने के लिए फ़ाइल सूचक सीधे प्राप्त करने या NSData का उपयोग करने का कोई तरीका है?आईओएस

सी फ़ंक्शन जो मैं फ़ाइल खोलने के लिए उपयोग कर रहा हूं नीचे घोषित किया गया है। फाइल पॉइंटर का उपयोग अन्य पुस्तकालय कार्यों में से कई में किया जा रहा है।

int ffopen(fitsfile **fptr,  /* O - FITS file pointer     */ 
      const char *name,  /* I - full name of file to open   */ 
      int mode,    /* I - 0 = open readonly; 1 = read/write */ 
      int *status);   /* IO - error status      */ 

उत्तर

5

NSFileManager जो एक NSFileHandle creats जब आप किसी फ़ाइल को खोलने का उपयोग करें।

Returns the file descriptor associated with the receiver. 
- (int)fileDescriptor 
Return Value 
The POSIX file descriptor associated with the receiver. 

यह भी देखना NSFileHandle

+0

उस के साथ शुभकामनाएँ। – gnasher729

2

यह इस पुस्तकालय एक प्रकार "fitsfile" वाणी और संकेत का उपयोग करता है "fitsfile *": इस संभाल fileDescriptor के लिए एक गेटर है।

फ़ंक्शन ffopen की तरह बहुत दिखता है फ़ाइल खोलता है और फिटफ़ाइल * बनाता है जो इसे एक फिटफ़ाइल ** का उपयोग करके लौटाता है। इसलिए आपको इन फ़ाइलों के बारे में चिंता करने की ज़रूरत नहीं है, पुस्तकालय यह करता है।

तो आप शायद की तरह

NSString* path = <Objective-C code to get a path>; 
BOOL readOnly = <YES or NO, your choice> 
fitsfile* fptr = NULL; 
int fstatus = 0; 
int fresult = ffopen (&fptr, path.UTF8String, (readonly ? 0 : 1), &fstatus); 

कुछ लिखना चाहते हैं के बाद से इस पुस्तकालय डेटा एक रास्ता है कि एक फ़ाइल में संग्रहीत करना चाहता है, यह करने के लिए एक ही रास्ता एक फ़ाइल में डेटा स्टोर करने के लिए है और ffopen करने के लिए उस फ़ाइल के पथ को पास करें।

+1

सामान्य रूप से, फ़ाइल पथ की अपेक्षा रखने वाले सी एपीआई को पास करने के लिए सी स्ट्रिंग प्राप्त करने के लिए '-फाइल सिस्टमप्रणालीकरण' ('-UTF8String' नहीं) का उपयोग करें। –