Kullanıcı tercihlerini saklamak için NSUSerDefaults kullanıyorum. Anahtarları sabitler olarak ayarlamanın iyi bir fikir olduğunu bir yerde okuduğumu hatırlıyorum - ve katılıyorum. Aşağıdaki kod şu anda sahip olduğum şey:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Bunu şu şekilde değiştirmeyi denedim:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Bu işe yararken, " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
" üretir . Kodumu derleyici uyarılarından uzak tutmak istiyorum. Bu uyarıyı nasıl düzeltebilirim?
NSString * const foo
çalışır çünküNSString
değişmezdir ve işaretçi değişmezdir, böylece asla doğru şekilde değiştirilemez? Ayrıca,const
dolaylı olarakstatic
(bir derleyici optimizasyonu) olan C ++ 'dan hatırlıyorum, bu yüzden onu çağırmaya gerek yok. Bu burada da doğru mu?