2014-07-24 5 views
5

में सरणी बनाएं I उद्देश्य-सी का उपयोग कर एक्सकोड में एक .csv फ़ाइल लोड करने का प्रयास कर रहा हूं और फिर मैं दो अलग-अलग सरणी बनाना चाहता हूं। पहले सरणी में पहले 2 कॉलम और दूसरे सरणी के मान तीसरे कॉलम के मान होना चाहिए।सीएसवी फ़ाइल से पढ़ें और उद्देश्य-सी एक्सकोड

मुझे पता है कि मैं जो खोज रहा हूं वह इस question के समान ही है, लेकिन मैं उद्देश्य-सी में पूरी तरह से नौसिखिया हूं और मैं थोड़ा उलझन में हूं।

NSString* fileContents = [NSString stringWithContentsOfURL:@"2014-07-16_15_41_20.csv"]; 
NSArray* rows = [fileContents componentsSeparatedByString:@"\n"]; 
for (int i = 0; i < rows.count; i ++){ 
    NSString* row = [rows objectAtIndex:i]; 
    NSArray* columns = [row componentsSeparatedByString:@","]; 
} 

तो, कोड के इस टुकड़े सही अब तक है:

अब तक मैं निम्नलिखित कोड लिखने की कोशिश की है? साथ ही, ऊपर वर्णित तरीके से मैं स्तंभों को 2 अलग-अलग सरणी में कैसे विभाजित कर सकता हूं?

+1

करते समय सावधान रहें CSV पार्स यदि आप इसके स्रोत को नियंत्रित नहीं करते। बहुत सारे अजीब अपवाद हैं जो दिखाए जा सकते हैं, क्योंकि सीएसवी एक अच्छी तरह से परिभाषित प्रारूप नहीं है। सुनिश्चित करें कि आप जानते हैं कि आपके पास ऐसे तत्व नहीं हैं जिनमें अल्पविराम शामिल हो सकता है (बैकस्लैश बच निकला? उद्धरण में संलग्न?) यदि आप बस कॉमा पर विभाजित होने जा रहे हैं जैसे आप यहां कर रहे हैं। – ahruss

उत्तर

7

आपका कोड सही लगता है। लेकिन पूर्णांक के साथ लूप के बजाय कोको फास्ट एन्युमरेशन का उपयोग करना बेहतर है।

सरणी में विभाजित करने के लिए आपका कोड इस तरह दिख सकता है।

NSMutableArray *colA = [NSMutableArray array]; 
NSMutableArray *colB = [NSMutableArray array]; 
NSString* fileContents = [NSString stringWithContentsOfURL:@"2014-07-16_15_41_20.csv"]; 
NSArray* rows = [fileContents componentsSeparatedByString:@"\n"]; 
for (NSString *row in rows){ 
    NSArray* columns = [row componentsSeparatedByString:@","]; 
    [colA addObject:columns[0]]; 
    [colB addObject:columns[1]]; 
} 

और पढ़ें NSMutableArray के बारे में

+0

मैं का उपयोग कर 'NSLog लिया परिणामों की जांच करने की कोशिश की (@" Columna:% @ "कोला,);' लेकिन मैं की तरह कुछ त्रुटियाँ मिलती है: '[__NSCFConstantString isFileURL]: गैर मान्यता प्राप्त चयनकर्ता उदाहरण के लिए भेजा 0x4a90 2014- 07-24 20: 30: 06.820 MyLocationMap [2759: 60b] *** बिना अपवाद अपवाद के कारण ऐप को समाप्त करना 'एनएसआईएनवालिडअर्गमेंट एक्सेप्शन', कारण: '- [__ एनएससीएफसी कॉन्स्टेंटस्ट्रिंग isFileURL]: अज्ञात चयनकर्ता उदाहरण 0x4a90'' – Galil

+0

पर भेजा गया है आपको बेहतर एनएसएसटींग का उपयोग करना चाहिए 'stringWithContentsOfFile: एन्कोडिंग: त्रुटि:'। आपको एक वैध पथ पारित करना होगा। यह सीएसवी फ़ाइल कहां रहता है? – idmean

+0

मैंने एक्सकोड निर्देशिका में सीएसवी फ़ाइल को खींच लिया और गिरा दिया जहां सभी स्रोत कोड फाइल मौजूद हैं। क्या मुझे निर्देशिका का पूरा पथ देना चाहिए जहां सीएसवी फ़ाइल मौजूद है? – Galil

संबंधित मुद्दे