2015-09-21 2 views
1

Hiho код-друзей,Как получить доступ к объекту для идентификатора

Я создал NSMutableDictionary «_favDictionary» с картинками данных внутри. Я получаю ключ от текущей ячейки из коллекции, который содержит целое число с именем «ключ».

FLAMainCell *cell = (FLAMainCell *) sender.view; 
NSUInteger *key = cell.key; 

NSString *inStr = [NSString stringWithFormat:@"%lu", (unsigned long)key]; 
_favDictionary[inStr] = storeImage; 


- (UIImage *)getFavouriteImages:(NSInteger)index{ 
    return _favDictionary[index]; 
} 

Я новичок в Objective-C, и я не мог найти возможность доступа мой словарь с целочисленным значением, как в моем методе «getFavouriteImages». Ошибка, которую я получаю, говорит: «NSMutableDictionary не отвечает на ObjectAtIndexedSubscript».

Может ли кто-нибудь сказать мне, как я могу получить доступ к моему словарю через целое число?

ответ

2

Прежде всего, если вы индексируете только целые числа, вы можете использовать NSArray.

Если вы хотите использовать NSDictionary, вам не нужно преобразовывать целые числа в строки, вместо этого вы можете использовать NSNumber.

FLAMainCell *cell = (FLAMainCell *) sender.view; 
NSUInteger *key = cell.key; 

NSNumber *inNumber = @(key); 
_favDictionary[inNumber] = storeImage; 

- (UIImage *)getFavouriteImages:(NSInteger)index{ 
    return _favDictionary[@(index)]; 
} 

Если вы хотите использовать строки, то вам придется конвертировать index в NSString тоже перед индексированием:

- (UIImage *)getFavouriteImages:(NSInteger)index{ 
    NSString *stringIndex = [NSString stringWithFormat:@"%@", @(index)]; 
    return _favDictionary[stringIndex]; 
} 
+0

AWH мой бог ... спасибо! Я не мог сделать что-то более часа, когда понял, что решение так просто. Я нашел способ для доступа к словарю с целыми числами: NSString * inStr = [NSString stringWithFormat: @ "% lu", (unsigned long) key]; – Vancore

Смежные вопросы