코드 실행 중 오류가 발생합니다. 내적인 Cocos2D 초기화이이인스턴스에 잘못된 셀렉터가 전송되었습니다. - objectForKey :
NSString *sImageFile = [dictionary objectForKey:@"answerCorrect"];
NSLog(@"%@",sImageFile);
여기에 표시 : 범인은 나를 아래 PLIST에서 문자열에 액세스하는
문자열의 인쇄가 장면의 초기화 부분에서 잘 작동
-(id) init
{
// always call "super" init
// Apple recommends to re-assign "self" with the "super" return value
if((self=[super init])) {
NSUserDefaults *sud = [NSUserDefaults standardUserDefaults];
NSString *ctlLang = [sud valueForKey:@"ctlLang"];
NSNumber *questionState = [sud valueForKey:@"questionState"];
NSNumber *scoreState = [sud valueForKey:@"scoreState"];
gameArray = (NSMutableArray *)[sud valueForKey:@"gameArray"];
for (NSString *element in gameArray) {
NSLog(@"\nQL gameArray value=%d\n", [element intValue]);
}
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:ctlLang];
dictionary = [NSDictionary dictionaryWithContentsOfFile:finalPath];
NSString *sImageFile = [dictionary objectForKey:@"answerCorrect"];
NSLog(@"%@",sImageFile);
}
}
. 문제는 나중에 정의하는 방법에서 발생합니다. 어떤 이유로 여기에 표시된 메소드에서 문자열을 반환하지 않습니다.
-(void) checkAnswer: (id) sender {
CGSize size = [[CCDirector sharedDirector] winSize];
CCMenuItemSprite *sAnswer = (CCMenuItemSprite *)sender;
NSLog(@"Checking Answer Tag is ---> %d",sAnswer.tag);
NSString *sImageFile = [dictionary objectForKey:@"answerCorrect"];
NSLog(@"%@",sImageFile);
if ([question.answer integerValue] == sAnswer.tag) {
//...
}
}
여기서 무엇을 놓칠 수 있습니까? 프로그램은 NSLog 성명서에 폭탄을 던집니다.
valueForKey에 의해 objectForKey를 의미합니까? 어쨌든, 어쩌면 당신은 당신이 필요로하는 것을 유지하지 않을 수 있습니까? – msgambel
코드에서와 마찬가지로 objectForKey를 사용합니다. 다음은 인터페이스에서 정의하는 방법입니다. @property (nonatomic, retain, readonly) NSDictionary * dictionary; – Nungster