iOS 4 응용 프로그램을 개발 중입니다.NSMutableDictionary를 __ NSCFString으로 변환했습니다.
은 내가 NSMutableDictionary 속성 클래스가 있습니다
@interface CardHelper : NSObject <NSXMLParserDelegate>{
...
NSMutableDictionary* cards;
...
}
@property (nonatomic, readonly) NSMutableDictionary* cards;
- (id)initWithXMLFile:(NSString *)xmlFileName andLanguage:(NSString *)language;
...
을 내가 만드는 것이 여기 NSMutableDictionary :
...
#define kNumCards 22
...
- (id)initWithXMLFile:(NSString *)xmlFileName andLanguage:(NSString *)language
{
if (self = [super init])
{
userLanguage = [NSString stringWithString:language];
cards = [NSMutableDictionary dictionaryWithCapacity: kNumCards];
[self parseXMLFile:[self GetResourcePathFor:xmlFileName OfType:@"xml"]];
return self;
}
else
return nil;
}
그리고 난 여기에 요소를 추가 :
- (void) parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
NSLog(@"DidEndElement: %@", elementName);
if ([elementName isEqualToString:@"card"])
{
[cards setObject:currentCard forKey:currentCard.Number];
[currentCard release];
currentCard = nil;
return;
}
...
}
CardHelper 객체를 ViewController (내 응용 프로그램의 기본보기 컨트롤러)라는 클래스에 만들어집니다. 의 ViewController에 정의
- (IBAction)oneCardCliked:(id)sender
{
oneViewController = [[OneCardViewController alloc] init];
oneViewController.cardHelper = cardHelper;
[self presentModalViewController:oneViewController animated:YES];
}
CardHelper :
@interface ViewController : UIViewController {
...
CardHelper* cardHelper;
...
}
...
내가 cardHelper가 사용하는 OneCardViewController에 전달이보기 컨트롤러에서 나는 또 다른 하나를 보여줍니다.
는하지만, OneCardViewController
에 나는 카드 NSMutableDictionary
에서 NSCFString
로 변환 것을 얻을 cards
에서 card
를 얻을하려고합니다.
OneCardViewController 인터페이스 :
@interface OneCardViewController : UIViewController {
CardHelper* cardHelper;
...
}
@property (nonatomic, retain) CardHelper* cardHelper;
나는 여기에 예외가 :
currentCard = [cardHelper.cards objectForKey:number];
당신은 이유를 알고 있습니까 : 예외가이 라인에서 발생합니다
- (void) setUpTarotGame
{
int arcaneNumber;
arcaneNumber = [cardHelper GenerateArcaneNumber];
NSString* number = [NSString stringWithFormat:@"%d", arcaneNumber];
if (cardHelper == nil) {
NSLog(@"cardHelper nil");
return;
}
if (cardHelper.cards == nil)
{
NSLog(@"cards nil");
return;
}
else
NSLog(@"cards count = %d", [cardHelper.cards count]);
currentCard = [cardHelper.cards objectForKey:number];
[self setCardImageWithArcane:arcaneNumber];
}
?