मैं बहुत की तरह अंत में जोड़ा चर के साथ एक यूआरएल स्ट्रिंग है,:स्विफ्ट यूआरएल स्ट्रिंग एन्कोडिंग आईओएस पर क्रैशिंग?
.../create?title=My Apartment
मैं (अंतरिक्ष) की तरह किसी भी गैर मान्य वर्ण से बचने के लिए चाहते हैं, लेकिन जब मैं ऐसा करने के लिए प्रयास करते हैं, मैं दुर्घटना दोनों सिम्युलेटर और अपने डिवाइस पर (आईओएस 8.0) का उपयोग करें:
2014-09-24 16:59:19.120 MyApp[16406:171349] Item1: MyApp.PostItem
2014-09-24 16:59:19.121 MyApp[16406:171349] Item2: My Apartment
2014-09-24 16:59:19.125 MyApp[16406:171349] Scrubbed: My 0X0P+0partment
:
NSLog("Item1: \(item)")
NSLog("Item2: \(item.title)")
if let scrubbed = item.title.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet()) {
NSLog("Scrubbed: \(scrubbed)")
} else {
NSLog("Nope!")
}
क्या मैं सिम्युलेटर पर देखो, यह है
उस स्क्रब किए गए स्ट्रिंग की अजीबता पर ध्यान दें। यह कुछ समय बाद खराब तरीके से निर्मित NSURL
ऑब्जेक्ट के बारे में शिकायत करता है, जो आश्चर्यजनक रूप से।
जब मैं अपने डिवाइस पर इस चलाने के लिए, मैं NSLog()
बयान पर एक EXC_BAD_ACCESS
कि Scrubbed:
2014-09-24 17:04:37.378 MyApp[4346:2048259] Item1: MyApp.PostItem
2014-09-24 17:04:37.379 MyApp[4346:2048259] Item2: My Apartment
(lldb) po scrubbed
error: <EXPR>:1:1: error: non-nominal type '$__lldb_context' cannot be extended
extension $__lldb_context {
^
<EXPR>:11:5: error: 'PostManager.Type' does not have a member named '$__lldb_wrapped_expr_3'
$__lldb_injected_self.$__lldb_wrapped_expr_3(
^ ~~~~~~~~~~~~~~~~~~~~~~
(lldb)
मुद्रित करने के लिए मैं कैसे पता लगा सकते हैं यहाँ क्या हो रहा है कोशिश कर रहा है के साथ दुर्घटना? मुझे इस तरह दुर्घटनाग्रस्त होने से पहले कंसोल में मुद्रित Nope!
देखने की उम्मीद होगी। मॉडल ऑब्जेक्ट में String
मान UITextField
द्वारा प्रदान किया जा रहा है।
संपादित करें:
NSLog("Data: \(item.title.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false))")
...
2014-09-24 17:18:43.620 MyApp[4367:2051348] Data: Optional(<4d792041 70617274 6d656e74>)
संपादित करें 2: मैं पूर्व झाड़ी मूल्य से कुछ NSData
उत्पादन प्राप्त करने में सक्षम था मैं इस दुर्घटनाओं Xcode में पुष्टि कर सकते हैं, और गुजरता एक खेल के मैदान में। एक बग लगता है - लेकिन कहाँ? Xcode? संकलक? रनटाइम?
संपादित करें 3: यह बग केवल तभी बढ़ता है जब मैं NSLog()
के साथ परिवर्तनीय मान मुद्रित करने का प्रयास करता हूं। अगर मैं इसे पूरी तरह से करने से बचता हूं, और केवल वैरिएबल का उपयोग करें, तो सभी खुश हैं।
'एनएसएलओजी ("% @ ", यूआरएल) 'पूरी तरह से मेरे लिए काम किया। धन्यवाद! –