मैं उपयोगकर्ता की प्राथमिकताओं को संग्रहीत करने के लिए NSUSerDefaults का उपयोग कर रहा हूं। मुझे याद है कि कहीं न कहीं यह पढ़ता हूं कि कुंजी को स्थिरांक के रूप में स्थापित करना एक अच्छा विचार है - और मैं सहमत हूं। निम्नलिखित कोड वह है जो मेरे पास वर्तमान में है:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
मैंने इसे बदलने की कोशिश की:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
जबकि यह काम करता है, यह " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
" पैदा करता है । मैं अपने कोड को कंपाइलर चेतावनियों से मुक्त रखने का इच्छुक हूं। मैं इस चेतावनी को कैसे ठीक कर सकता हूं?
NSString * const foo
क्योंकिNSString
अपरिवर्तनीय है और सूचक अपरिवर्तनीय है इसलिए यह कभी सही नहीं बदल सकता है? इसके अलावा, मुझे C ++ से याद आता है जो किconst
संक्षेप मेंstatic
(एक कंपाइलर ऑप्टिमाइज़ेशन) है, इसलिए इसे बाहर करने की आवश्यकता नहीं है। क्या यहाँ भी यही सच है?