2012-09-14 8 views
5

क्या कोई मुझे निम्नलिखित परिणामों के लिए विसंगति का कारण बता सकता है?यूनिकोड वर्णों के साथ आईओएस एनएसएलओजी त्रुटि

completionHandler:^(NSArray *placemarks, NSError *error) { 
    NSLog(@"\n placemarks%@", placemarks); 

हुई हों:

placemarks(
"\U039b\U03b5\U03c9\U03c6\U03cc\U03c1\U03bf\U03c2 \U039a\U03cd\U03c0\U03c1\U03bf\U03c5 163, 16451 \U0391\U03c1\U03b3\U03c5\U03c1\U03bf\U03cd\U03c0\U03bf\U03bb\U03b7\U03c2, \U0395\U03bb\U03bb\U03ac\U03c2 @ <+37.90085408,+23.75654648> +/- 100.00m, region (identifier <+37.90085408,+23.75654648> radius 141.62) <+37.90085408,+23.75654648> radius 141.62m" 
) 

और

for(id object in placemarks) {NSLog(@"%@ \n", object);} 

2012-09-14 13:08:23.493 ΑΦΜ[1390:c07] Λεωφόρος Κύπρου 163, 16451 Αργυρούπολης, Ελλάς @ <+37.90085408,+23.75654648> +/- 100.00m, region (identifier <+37.90085408,+23.75654648> radius 141.62) <+37.90085408,+23.75654648> radius 141.62m 

परिणामस्वरूप धन्यवाद

उत्तर

6

दिलचस्प :)

पासिंग %@NSLog में के प्रारूप स्ट्रिंग बस का अर्थ है 'कहते हैं एक वस्तु' पर description

ऐसा लगता है कि NSArray पर प्रत्येक ऑब्जेक्ट पर description से अलग यूनिकोड वर्णों के साथ सौदा करता है।

हालांकि, मुझे लगता है कि NSArray पर वर्णन विधि सिर्फ वस्तुओं इसमें और फिर, किसी कारण के लिए मैं 100% के बारे में, उन्हें NSLog करने के लिए उन्हें बाहर डंपिंग से पहले एन्कोडिंग है यकीन नहीं है में से प्रत्येक पर वर्णन कहता है।

3

%@NSLog पासिंग [NSArray description] को सरणी पर कॉल करता है। NSArray class reference कहता है कि [NSArray description] "एक स्ट्रिंग देता है जो सरणी की सामग्री का प्रतिनिधित्व करता है, जिसे एक संपत्ति सूची के रूप में स्वरूपित किया जाता है"। ऐसा करने से यूनिकोड वर्णों को NSNonLossyASCIIStringEncoding में परिवर्तित किया जाता है। यदि आप प्रक्रिया को उलट देते हैं तो आपका एनएसएआरएआरई सही तरीके से प्रिंट करेगा।

completionHandler:^(NSArray *placemarks, NSError *error) { 
     NSLog(@"%@", [NSString stringWithCString:[[placemarks description] cStringUsingEncoding:NSASCIIStringEncoding] encoding:NSNonLossyASCIIStringEncoding]); 

यह एक NSString करने के लिए एक सी स्ट्रिंग में \ Uxxxx इनकोडिंग सार्वभौमिक पात्रों के सभी के साथ मूल स्ट्रिंग परिवर्तित, तो डिकोडिंग सी स्ट्रिंग NSNonLossyASCIIStringEncoding जो [NSLog description] के द्वारा किया गया था पीछे से काम करता है। मैंने पहली बार सी स्ट्रिंग में कनवर्ट किए बिना ऐसा करने का कोई तरीका नहीं निकाला है।

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