2012-03-12 11 views
5

मैं कुछ बहुत ही बुनियादी एफ़टीपी कार्यक्षमता के साथ आईओएस 5 ऐप बनाने का प्रयास कर रहा हूं और कुछ मार्गदर्शन की आवश्यकता है। यह स्थानीय नेटवर्क पर किसी डिवाइस से कनेक्ट हो जाएगा और .dat/txt फ़ाइलों के साथ पढ़ने/लिखने के कार्यों को निष्पादित करेगा। मैंने पिछले कुछ दिनों से कुछ खोज की है और विभिन्न सिफारिशें देखी हैं लेकिन कुछ भी आसान नहीं है कि मैं उठा सकता हूं और अपने व्यक्तिगत उपयोग के लिए जल्दी से संशोधित कर सकता हूं।आईओएस बुनियादी एफ़टीपी सेटअप; स्ट्रीम पढ़ें और लिखें

मेरे सवालों का ये हैं:

  1. वहाँ किसी भी ट्यूटोरियल/नमूना कोड है कि आप मेरे लिए सलाह देते हैं कर सकते हैं?
  2. बुनियादी पढ़ने/लिखने के संचालन के लिए मुझे किस ढांचे और कक्षाओं के साथ काम करना चाहिए?

अन्त में, मैं उल्लेख करना चाहिए कि मैं एप्पल से SimpleFTPSample का विश्लेषण लेकिन नमूना कोड "कनेक्शन विफलता" और "स्ट्रीम को खोलने में त्रुटि" नोटिस प्रत्येक उदाहरण के लिए दे रहा है करने के लिए समय की एक पर्याप्त राशि दे दिया है, तो मैं ' मैं इसकी उपयोगिता से थोड़ा सावधान हूँ।

अगर मुझे उत्तर दिया गया है तो मुझे क्षमा करें। सभी संबंधित पदों में मुझे आवश्यक उत्तर के टुकड़े हैं, लेकिन पूरी बात नहीं। आपका अग्रिम में ही बहुत धन्यवाद!

स्पष्टता के लिए संपादित करें: एक अच्छी तरह से परिभाषित उदाहरण या चरण-दर-चरण ट्यूटोरियल वह है जो मैं वास्तव में पसंद करूंगा। मेरी अपनी Google खोजों ने कुछ भी नहीं बदला है और मुझे यहां कुछ मार्गदर्शन की आवश्यकता है।

अद्यतन: मैंने बहुत पहले इस प्रश्न को पोस्ट किया था लेकिन स्वीकृत उत्तर में उल्लिखित एफ़टीपीहेल्पर का उपयोग जारी रखा है। मैंने हाल ही में पुरानी परियोजना से धूल को ब्रश किया और महसूस किया कि एफ़टीपीहेल्पर के फ़ेच फ़ंक्शन में एक मामूली मेमोरी लीक थी जो बार-बार कॉल करने पर ऐप-किलर हो सकती है। अगर कोई भी इस सवाल से गुज़रता है और FTPHelper का उपयोग करने का विकल्प चुनता है, तो नीचे दिए गए कोड में देखी गई CFRelease लाइन को जोड़ना सुनिश्चित करें।

- (void) fetch: (NSString *) anItem 
{ 
    if (!self.uname || !self.pword) COMPLAIN_AND_BAIL(@"Please set user name and password first"); 
    if (!self.urlString) COMPLAIN_AND_BAIL(@"Please set URL string first"); 

    NSString *ftpRequest = [NSString stringWithFormat:@"%@/%@", self.urlString, [anItem stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
/* CFShow(ftpRequest); */ 
    NSString *writepath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    self.filePath = [writepath stringByAppendingPathComponent:anItem]; 
    CFURLRef writeURL = CFURLCreateFromFileSystemRepresentation (NULL, (const UInt8 *) [writepath UTF8String], [writepath length], NO); 
    MySimpleDownload((CFStringRef)ftpRequest, writeURL, (CFStringRef) self.uname, (CFStringRef)self.pword); 
    CFRelease(writeURL);//ADD THIS LINE TO FIX MEMORY LEAK 
} 
+0

क्या आप कोड स्रोत कोड भेज सकते हैं कि इंटरनेट के बिना डाउनलोड फ़ाइल के लिए ftp को कैसे कार्यान्वित किया जाए –

उत्तर

7

SimpleFTPSample ऐप सही चल रहा है, शायद एक ऐसा मुद्दा है जिसे आप नहीं देख सकते हैं। मैं आपको क्या सलाह दे सकता हूं (ऐप्पल के उदाहरण को छोड़कर) THIS उदाहरण जांचना है जिसमें सभी मूल एफ़टीपी संचालन के लिए एक सहायक वर्ग शामिल है। आईओएस 5 एआरसी के बारे में पता होना एक बात है। ऐप्पल के उदाहरण और जो मैंने लिंक किया है, वे पुराने आईओएस संस्करणों के लिए हैं।

आईओएस 5 में उनका उपयोग करने के लिए मूल रूप से 2 तरीके हैं - संकलक को -fno-objc-arc ध्वज [आपकी परियोजना] में जोड़कर एआरसी का उपयोग न करने के लिए कहें -> लक्ष्य -> ​​[आपका ऐप] -> चरण बनाएं -> संकलन स्रोत -> [आपकी फ़ाइल], या एआरसी में कनवर्ट करने के लिए एक्सकोड में अंतर्निर्मित टूल का उपयोग करके।

मैंने व्यक्तिगत रूप से केवल पहली विधि का परीक्षण किया है और यह मेरे लिए काम करता है।

यदि यह आपकी मदद नहीं करता है तो मैं एक उदाहरण लिख सकता हूं, लेकिन दुर्भाग्यवश आज मैं बहुत व्यस्त हूं।

UPDATED:

बुनियादी तंत्र [FTPHelper list:THE_FTP_URL] उपयोग करने के लिए एक फ़ोल्डर की सामग्री को सूचीबद्ध करने के लिए है, तो सामग्री के साथ एक सूची बना सकते हैं और प्रकार (फ़ाइल या फ़ोल्डर) डाउनलोड [FTPHelper download: THE_FTP_URL_WITH_THE_FILENAME_FROM_LISTING] का उपयोग कर के आधार पर है। फाइल सिस्टम से एक फ़ाइल के साथ [FTPHelper upload:FILE_TO_UPLOAD] का उपयोग कर - यहाँ से आप

- (void) downloadFinished 
{ 
    //do the reading depending on the file type 
    NSData *data = [NSData dataWithContentsOfFile:[FTPHelper sharedInstance].filePath]; 
} 

अपलोडिंग एक समान तरीके से हासिल की है लागू करने के लिए की है।

+0

हम्म, मुझे आश्चर्य है कि मैं SimpleFTP के साथ क्या कर रहा हूं। भले ही, दूसरे उदाहरण के लिए धन्यवाद। मैं अभी इसके साथ चारों ओर झुका रहा हूं और यह पहले से ही परिणाम दे रहा है (गति का एक अच्छा बदलाव!)। मान लें कि आप FTPHelper क्लास से परिचित हैं, आप foo.txt को डाउनलोड करने और इसकी सामग्री को पढ़ने की सलाह कैसे देंगे? या foo2.txt पर सामग्री लिखने और इसे अपलोड करने के बारे में कैसे? – Squatch

+0

मैंने अपना जवाब संपादित किया, आप इसे देख सकते हैं। अगर कुछ स्पष्ट नहीं है, तो पूछने के लिए स्वतंत्र महसूस करें। – o15a3d4l11s2

+0

ग्रेट। अंत में काम करने के लिए कुछ राहत है। धन्यवाद! – Squatch

4

जो आप इस्तेमाल कर सकते हैं कई पुस्तकालयों हैं और वे महान काम कर रहे हैं। :)

उदाहरण के लिए:

http://www.chilkatsoft.com/ftp-objc.asp

http://code.google.com/p/ios-ftp-server/

मैं उन्हें का उपयोग करना चाहिये, क्योंकि खुद के द्वारा एक कोडन :) एक बात बहुत समय ले याद करने के लिए होता है, के रूप में o15a3d4l11s2 कहा एआरसी से अवगत होना है। यदि आप इसका उपयोग करते हैं तो पुस्तकालयों में बिल्ड झंडे को जोड़ना न भूलें जो एआरसी नहीं हैं।

+0

वैकल्पिक पुस्तकालयों के लिए धन्यवाद। मुझे लगता है कि मैं एफ़टीपीहेल्पर से चिपक सकता हूं लेकिन इन चीजों को बैकअप योजनाओं की आवश्यकता होती है, इसलिए ये बहुत अच्छे हैं। – Squatch

+0

मैं किसी ऐप जो बड़े वीडियो अपलोड करने के भले ही एप्लिकेशन को पृष्ठभूमि में है मैं उपयोग कर सकते हैं का समर्थन करता है बनाने की जरूरत है इस \t जो आप इस्तेमाल कर सकते हैं कई पुस्तकालयों हैं और वे महान काम कर रहे हैं। :) उदाहरण के लिए: http://www.chilkatsoft.com/ftp-objc.asp ?? –