Dans mon application iPhone, j'ai un appSettings.plist. Cela me permet, mais aussi aux autres de simplement changer certains paramètres. L'un des paramètres est la couleur prédominante de l'application. Le .plist ressemble à ceci:Entier à l'aide CGFloat requise
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Red</key>
<integer>255</integer>
<key>Green</key>
<integer>123</integer>
<key>Blue</key>
<integer>124</integer>
<key>compositeRGB</key>
</dict>
</plist>
Dans mon code, je lis ce fichier, et essayer de faire un UIColor de ces trois numéros. Je dois admettre que je ne connais pas grand chose à propos de CGFLoats, et je soupçonne que c'est la cause de mes problèmes. C'est ce que je fais:
-(void)readAppSettings
{
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"appSettings.plist"];
NSDictionary *plistDictionary = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
unsigned int RedComponent = [[plistDictionary objectForKey:@"Red"]intValue];
unsigned int GreenComponent = [[plistDictionary objectForKey:@"Green"]intValue];
unsigned int BlueComponent = [[plistDictionary objectForKey:@"Blue"]intValue];
appColor = [UIColor colorWithRed: ((float) RedComponent/255.0f)
green: ((float) GreenComponent/255.0f)
blue:((float) BlueComponent/255.0f)
alpha:1.0f];
}
chaque fois que j'essaie d'utiliser appColor
comme UIColor, plantage de mon application, avec l'erreur suivante:
« - [__ NSCFArray CGColor]: sélecteur non reconnu envoyé à l'instance 0x7b0ab20 '
Could somebody explain to me what I'm doing wrong. You don't have to be polite.
Merci beaucoup. Cela a fait l'affaire. Je me débattais énormément avec le CGFLoat, que je négligeais d'une chose si basique. – Sjakelien
J'ai également été assez perplexe par "- [__ NSCFArray CGColor]:" dans le message d'erreur, mais je n'aurais pas dû faire attention à ça je suppose. – Sjakelien
Les erreurs de mémoire de @Sjakelien comme celle-là sont notoirement difficiles à traquer. Un moyen utile de les trouver est de courir avec les zombies activés. – cobbal