I' Я пытаюсь создать NSDictionary
, полный массивов в файле реализации моей модели, но мой код еще не работает Я хочу создать массивы, которые представляют собой списки типов собак и кошек, а затем добавить эти массивы в словарь с ключами DOG
и CAT
. Вот мой код:
@implementation wordDictionary
@synthesize catList = _catList;
@synthesize dogList = _dogList;
@synthesize standardDictionary =_standardDictionary;
- (void)setCatList:(NSMutableArray *)catList
{
self.catList = [NSMutableArray arrayWithObjects:@"lion", @"puma", @"snow leopard", nil];
}
- (void)setDogList:(NSMutableArray *)dogList
{
self.dogList = [NSMutableArray arrayWithObjects:@"pit bull", @"pug", @"chihuahua", nil];
}
-(void)setStandardDictionary:(NSMutableDictionary *)standardDictionary
{
[self.standardDictionary setObject: _catList forKey:@"CAT"];
[self.standardDictionary setObject: _dogList forKey:@"DOG"];
}
- (NSString*)selectKey
{
NSInteger keyCount = [[self.standardDictionary allKeys] count];
NSInteger randomKeyIndex = arc4random() % keyCount;
NSString *randomKey = [[self.standardDictionary allKeys] objectAtIndex:randomKeyIndex];
return randomKey;
}
@end
Этот код — модель. Модель подключена к моему представлению контроллер таким образом, что когда пользователь нажимает кнопку, NSString
, возвращенный из randomKey
, отображается в метке на экране.Таким образом, текст будет читаться либо CAT
, либо DOG
. Вот код для этого:
- (IBAction)changeGreeting:(UIButton*)sender {
NSString *chosenKey = [self.dictionary selectKey];
NSString *labelText = [[NSString alloc] initWithFormat:@"%@", chosenKey];
self.label.text = labelText;
}
К сожалению, когда я нажимаю кнопку на симуляторе, я получаю сообщение об ошибке: Поток 1: EXC_ARITHMETIC (code=EXC_1386_DIV, subcode=0x0)
at NSInteger randomKeyIndex = arc4random() % keyCount;
и кажется, что я получаю это, потому что ни в моем NSArray
, ни в моем NSDictionary
нет никаких объектов внутри них.
Кто-нибудь знает, почему мои NSArray
и NSDictionary
не заполнены?
Большое спасибо.