Xcode فائلن ۾ ڪاڊيڪس کي ڪيئن ڪئين ڪئين

ھڪڙو سادو ڪم آھي جيڪو ھڪڙو ايپس تي ريبون آھي XML فائلن کي نفاذ ڪرڻ جي صلاحيت آھي. ۽، خوش قسمت سان، ايڪسڊڊ ان کي نسبتا آسان بڻائي ٿو Objective-C ۾ هڪ XML فائيل کي.

هڪ ايڪس ايم ايل فائل توهان جي ايپ بابت ڪنهن ويب سائيٽ لاء آر ايس ايف فيڊ تي بنيادي ڊيٽا تان ڪا شيء رکي سگهي ٿي. اهي پڻ توهان جي ايپ اندر معلومات کي تازه ڪاري ڪرڻ جو هڪ بهترين طريقو ٿي سگهي ٿو، تنهنڪري فهرست ۾ نئين شيء شامل ڪرڻ لاء ايپل کي نئين بائنري کي جمع ڪرڻ جي ضرورت آهي.

پوء ايڪس ايم فائلون ڪيئن ايڪسڪسڪس ۾ پروسيس ڪنديون آهن؟ پروسيس ۾ ايڪس ايم ايل پيسر جي عمل کي شروع ڪرڻ لاء، ڪيبل استعمال ڪرڻ لاء قدم شامل آهن، انهي فائل کي پروڊائڻ، هڪ فرد جي عنصر جي شروعات، عنصر جي حرف (قدر) انفرادي عنصر جي آخر، ۽ نموني جي عمل جي پڇاڙيء ۾.

هن مثال ۾، اسان انٽرنيٽ تان هڪ فائيل پائيس ڪندي ته ان کي خاص ويب پتي ( URL ) منتقل ڪندي ڪندي.

اسان کي مٿو فائل ڪڍي عمارت سان شروع ڪنداسين. اهو اسان جي فائل کي اڳتي وڌڻ لاء گهٽ ۾ گهٽ گهربلن سان تفصيلي ڏسندڙ ڪنٽرولر لاء هڪ بنيادي بنيادي مٿو فائل جو هڪ مثال آهي:

ڇاپوٽورٽ روٽو ڏيٽرومرر: UITableViewController {
DetailViewController * detailViewController؛

NSXMLParser * rssParser؛
NSMutableArray * مضمون؛
NSMutableDictionary * شيون؛
NSString * currentElement؛
NSMutableString * ElementValue؛
BOOL errorParsing؛
}

سفير (غير جمعي، برقرار رکيل) IBOutlet DetailViewController * تفصيل ڏيورڻ وارو ڪنٽرول؛

- (صفا) parseXMLFileAtURL: (NSString *) URL؛

پارس XMLFileAtURL فنڪشن اسان جي لاء عمل شروع ڪندو. جڏهن اهو ختم ٿي ويندو، ته NSMutableArray "آرٽيڪل" اسان جي ڊيٽا رکندي. اي ايل ايم ايس ايم ايل فائل ۾ فيلڊ جا نالا سان لاڳاپيل مکيه ٻوليون سان ٺاهي سگھجن ٿيون.

هاڻي ته اسان مختلف قسم جي ضرورتن کي مرتب ڪري ڇڏيو آهي، اسان انهي جي مرحلي ۾. ايم پي فائل ۾ ملن ٿا.

- (صفا) پٽاندرڊڊ اسٽيٽ دستاويزن: (NSXMLParser *) پارسر {
NSLog (@ "فائل مليا ۽ پٽڻ شروع ڪيو")؛

}

اهو فنڪشن جي عمل جي شروعات تي هلندو آهي. هن فنڪشن ۾ ڪنهن به شيء کي رکڻ جي ڪا ضرورت ناهي، پر جيڪڏهن توهان ڪم کي ڪم ڪرڻ چاهيندا هئاسين، جڏهن فائل مڪمل طور تي شروع ٿئي ٿي، ته اهو توهان ڪٿي ڪوڊ ڪيو هو.

- (صفا) parseXMLFileAtURL: (NSString *) URL
{

اي سي ايس ڪيڪٽ / 525.27.1 (KHTML، جهڙوڪيڪس) نسخہ / 3.2.1 سفاري / 525.27.1 "؛ اين ايس ايس آرڪٽ * agentString = @" مولاilla / 5.0 (ميڪنٹوش؛ يو؛ ايبل ايبل ايس اي ايس 10_5_6؛ اين-اي) "؛
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString: URL]]؛
[سيٽ ڪرڻ وارا عرض ڪريو: ايجنٽ جي ڳولا لاء HTTP هاڏر ايفليڊ: @ "User-Agent"]؛
xmlFile = [NSURLConection send sendSynchronous جواب: واپسي موٽڻ جي درخواست: نيل غلطي: نيل]؛


مضمون = [[NSMutableArray Alloc] انٽ]؛
errorParsing = نه؛

rssParser = [[NSXMLParser Alloc] initWithata: xmlFile]؛
[rssParser setDelegate: self]؛

// توهان کي شايد ڪجهه هنن کي تبديل ڪرڻ جي ضرورت هجي جيڪو توهان جي پي ايم ايل فائل جي قسم تي ڀاڙين ٿا
[rssParser setShouldProcessNamespaces: NO]؛
[rssParser setShouldReportNamespacePrefixes: NO]؛
[rssParser setShouldResolveExternal_ntities: NO]؛

[rssParser parse]؛

}

اهو فنڪشن انجڻ کي هدايت ڪري ٿو ته ڪا خاص ويب ايڊريس (URL) تي ڪا فائيل ڊائونلوڊ ڪرڻ ۽ ان کي پروسيس ڪرڻ لاء عمل شروع ڪريو.

اسان کي ٻاهرين سرور ٻڌائي رهيا آهيون ته اسان هڪ سفري ميڪ هلائيندڙ آهيون، انهي صورت ۾ اهو سرور هڪ موبائل ورزن ڏانهن آئي فون / ايپ کي ريڊيو کي ڏئي ڇڏيندو آهي.

آخر ۾ اختيارن مخصوص XML فائلن ڏانهن مخصوص آهن. گهڻو ڪري آر ايس فائيلون ۽ عام ٽيڪسٽ فائلن کي ان جي ضرورت نه هوندي.

(void) نرسر: (NSXMLParser *) پئرسر parseErrorOccurred: (NSError *) parseError {

NSString * errorString = [NSString stringWithFormat: "" غلطي ڪوڊ٪ i "، [parseError code]]؛
NSLog (@ "ايڪس ايم ايس پيشي ڪرڻ ۾ غلطي:٪ @"، غلطي اسٽيشن)؛


errorParsing = YES؛
}

اهو هڪ سادو غلطي آهي جيڪو روڪنگ جي جانچ ڪندي آهي جيڪو بائنري قيمت قائم ڪندو جيڪڏهن اها غلطي جو نتيجو آهي. توھان جيڪي ڪجھھ ڪم ڪري رھيا آھن تن جي بنياد تي وڌيڪ خاصيت جي ضرورت پوندي. جيڪڏهن توهان کي مڪمل طور تي غلطي جي صورت ۾ پروسيسنگ ڪرڻ کانپوء ڪجهه ڪوڊ هلائڻ جي ضرورت آهي، انهي غلطي کي بارڊر پارسير بائنري متبل استعمال ڪري سگهجي ٿو.

(NSXMLParser *) پيسرر didStartElement: (NSString *) elementname namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName attributes: (NSDictionary *) attributeDict {
موجودهElement = [elementName ڪاپي]؛
ElementValue = [[NSMutableString Alloc] init]؛
جيڪڏهن ([elementName isEqualToString: @ "item"]) {
شيء = [[NSMutableDictionary سموپيٽ] انٽ]؛

}

}

ايڪس ايم ايل پيسر جو گوشت ٽن فعل تي مشتمل آهي، جيڪو هڪ فرد عنصر جي شروعات ۾ هلندو آهي، جيڪو عنصر کي پيٽ جي وچ ۾ هلندو آهي، جيڪو عنصر جي آخر ۾ هلندو آهي.

هن مثال لاء، اسان آر ايس فائيل وانگر ساڳيو فائل ساڳيو ويندو، جيڪا XML فائل اندر "شيون" جي هيٺان حصن ۾ ٽوڙيو ويو آهي. پروسيسنگ جي شروعات تي، اسان انهن جي عنصر جي لاء ڳولي رهيا آهيون "شيون" ۽ اسان جي شين جي ڊسڪشن جو نالو جڏهن هڪ نئين گروهه ڄاڻايل آهي. ٻي صورت ۾، اسان پنهنجي قيمت کي اهميت لاء شروعات ڪندا آهيون.

- (صفا) پٽسي: (NSXMLParser *) پيسر لڌو Characters: (NSString *) string {
[ElementValue AppendString: جملو]؛
}

هي هڪڙو آسان حصو آهي. جڏهن اسان اکرن کي ڳوليندا آهيون، اسان انهن کي صرف اسان جي "متليم ويال" ۾ شامل ڪيو آهي.

(Noid): (NSString *) elementname namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName {(void) پاڙيندڙ: (NSXMLParser *) اڳوڻو ڪيوEndElement: (NSString *) elementname namespaceURI: (NSString *)
جيڪڏهن ([elementName isEqualToString: @ "item"]) {
[آرٽيڪل شامل ڪريو]: [item copy]]؛
} else {
[شيون سيٽ ڪريو: ElementValue لاء ڪيئي: elementName]؛
}

}

جڏهن اسان هڪ عنصر جي پروسيسنگ ختم ڪيو آهي، اسان کي هڪ ٻن شين مان ڪرڻو پوندو: (1) جيڪڏهن آخر عنصر "شيون" آهي، اسان اسان جي گروپ ختم ڪيو آهي، تنهنڪري اسان پنهنجو مقالو اسان جي آرٽيڪل کي شامل ڪنداسين. ".

يا (2) جيڪڏهن عنصر "شيون" ناهي، جيڪڏهن اسان پنهنجي لغتن جي قيمت هڪ ڪنڊ سان مقرر ڪندا سين جيڪا عنصر جو نالو ملندو. (انهي جو مطلب اهو آهي ته اسان XML فائل جي هر فيلڊ جي لاء انفرادي ڪيبل جي ضرورت ناهي. اسان ان کي متحرڪ طور تي وڌيڪ عمل ڪري سگهون ٿا.)

- (صفا) پٽسل ڊيديڊ دستاويزي: (NSXMLParser *) پارسر {

جيڪڏهن (errorParsing == نه)
{
اين ايس ايس ايل (@ "ايڪس ايم پي پروسيسنگ ٿيل!")؛
} else {
NSLog (@ "XML پروسيسنگ دوران خراب ٿي ويو")؛
}

}

اهو اسان جي آخري نموني لاء ضروري آهي. اهو ئي طريقي سان دستاويز ختم ڪري ٿو. توهان ڪنهن به ڪوڊ ڪرائيندو جنهن کي توهان عمل کي ختم ڪرڻ چاهيو ٿا يا غلطي جي صورت ۾ جيڪو توهان کي ڪرڻ چاهيندو، اهو خاص طور تي.

ھڪڙي شيء ڪجھھ ائپس شايد ڪرڻ چاھيو ٿا ڊيٽا کي فائل ۽ / يا ايڪس ايم ايل فائل کي بچائڻ لاء. انهي طريقي سان، جيڪڏهن صارف انٽرنيٽ سان ڳنڍيل ناهي، ايندڙ وقت اهي ايپ لوڊ ڪريو، انهن اڃا تائين هن معلومات تي حاصل ڪري سگهو ٿا.

يقينا، اسين سڀ کان اهم حصو نه وسارينداسين: فائل کي ڏاهپ ڪرڻ لاء توهان جي درخواست ٻڌائي (۽ ان کي ڳولڻ لاء هڪ ويب پتو ڏيو!).

عمل کي شروع ڪرڻ لاء، توهان کي صرف هن ڪوڊ جي لائن کي مناسب جاء تي شامل ڪرڻ جي ضرورت آهي جتي توهان XML پروسيسنگ ڪرڻ چاهيو ٿا:

[خودناسب XMLFileAtURL: @ "http://www.webaddress.com/file.xml"]؛