मुझे हाल ही में हालांकि, क्या मुझे कुछ याद आ रहा है? संपादित करें: मेरी गलती ... और मुझे लगता है कि मैं समस्या को देखना शुरू कर सकता हूं ... जैसा कि सभी ने बताया है कोई stringForKey: NSDictionary पर विधि, और हाँ, मैं उपयोगकर्ता चूक के बारे में सोच रहा था जब मैंने सवाल पूछा ... तो मैं वापस चला गया और देखा कि मैं क्या कर रहा था ... यहाँ यह है: अगर मैं इस मामले में कलाकारों को नहीं करता, तो मुझे निम्न त्रुटि मिलती है: मूल्य कास्टिंग "समस्या हल करता है" और मैं नहीं बल्कि 10 लाइनें नहीं लिखूँगी जहां एक होगा ... क्या यह बुरा है? भी: JSON पुस्तकालय से शब्दकोश आ रहे हैं ... और NULL इस मामले में मान्य मान हैं, तो शायद यह नहीं है कि एनएसएसडीए रिटर्न उन्हें यदि कुंजी अनुपलब्ध है, लेकिन यह कि वास्तव में कुंजी है, वहां, और वास्तव में शून्य है। [NSNull null] से (NSString *) कास्टिंग कहा गया है "भयानक" था - [NSDictionary stringForKey:] विधि [NSNull null] लौटाएगी यदि कुंजी शब्दकोश में नहीं है, और अगर मैं डॉन ' कलाकारों को कम्पाइलर मुझ पर चिल्लाता टी
NSString * someValue = (NSString *) [myDictionary objectForKey: @ "कुंजी"]; यदि (कुछ वैल्यू == (NSString *) [NSNull null]) ... चेतावनी: विशिष्ट उद्देश्य-सी प्रकार 'स्ट्रक्चर एनएसनल *' और 'स्ट्रेट एनएसएसटीइंग *' की तुलना में एक कलाकार का अभाव है
NSDictionary NSNull के उदाहरणों को वापस नहीं करता है जब तक कि आप या कोई अन्य स्रोत उन्हें वहां नहीं डालते। साथ ही, NSDictionary को -stringForKey: का जवाब नहीं देता। क्या आप शायद NSUserDefaults
के बारे में सोच रहे हैं यदि आपके पास NSDictionary का एक उदाहरण है और जो भी आप करना चाहते हैं, उससे एक स्ट्रिंग प्राप्त हो, तो आप निम्नलिखित कोड की तरह कुछ प्रयास करें।
NSString * MyGetString (NSDictionary * dict, आईडी कुंजी, NSString * fallback) {आईडी परिणाम = [dict वस्तुफ़ोर्क: कुंजी]; यदि (! परिणाम) परिणाम = फॉलबैक; Else if (! [का परिणाम है KindOfClass: [NSString वर्ग]]) परिणाम = [परिणाम विवरण]; वापसी परिणाम; } फ़ॉलबैक स्ट्रिंग को फ़ॉलबैक के रूप में पास करें - फ़ंक्शन इसका उपयोग करेगा यदि कोई वस्तु कुंजी कुंजी से संबद्ध नहीं है। < / P>
Comments
Post a Comment