Я получаю данные из базы данных, и мне нужно добавить значение поля строки и идентификатор записи.NSMutableDictionary путают, как использовать ключи с определенным кодом?
Однако, мне это нужно для работы с некоторым существующим кодом ...
Я замена этого (см код ниже) и получать данные из моей базы данных.
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
self.allCategories = dict;
[dict release];
Это файл загружает ...
Но нужно работать с этими ключевыми и стоимостными функциями поиска.
- (void)resetSearch {
NSMutableDictionary *allCategoriesCopy = [self.allCategories mutableDeepCopy];
self.Categories = allCategoriesCopy;
[allCategoriesCopy release];
NSMutableArray *keyArray = [[NSMutableArray alloc] init];
[keyArray addObject:UITableViewIndexSearch];
[keyArray addObjectsFromArray:[[self.allCategories allKeys]
sortedArrayUsingSelector:@selector(compare:)]];
self.keys = keyArray;
[keyArray release];
}
.
- (void)handleSearchForTerm:(NSString *)searchTerm {
NSMutableArray *sectionsToRemove = [[NSMutableArray alloc] init];
[self resetSearch];
for (NSString *key in self.keys) {
NSMutableArray *array = [Categories valueForKey:key];
NSMutableArray *toRemove = [[NSMutableArray alloc] init];
for (NSString *name in array) {
if ([name rangeOfString:searchTerm
options:NSCaseInsensitiveSearch].location
== NSNotFound)
[toRemove addObject:name];
}
if ([array count] == [toRemove count])
[sectionsToRemove addObject:key];
[array removeObjectsInArray:toRemove];
[toRemove release];
}
[self.keys removeObjectsInArray:sectionsToRemove];
[sectionsToRemove release];
[table reloadData];
}
получает сообщение об ошибке из этого кода ...
NSDictionary *arrayTmp= [[NSDictionary alloc] init];
... loop records
int cid = sqlite3_column_int(statementTMP, 0);
NSString *category = [[NSString alloc]
initWithUTF8String:(char *)sqlite3_column_text(statementTMP, 1)];
[arrayTmp setObject:category forKey:[NSString stringWithFormat:@"%i", cid]];
Ошибки вызвана линией выше
* Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: «- [ NSCFString count]: непризнанный селектор, отправленный на экземпляр 0x4d4c500 '* Счетный стек при первом броске *
... end loop
self.allCategories = arrayTmp;
[arrayTmp release];
Я только что посмотрел файл, посмотрю мое редактирование выше, изображение ... Я думаю, что это будет root? Что я должен сделать, чтобы это решить? – Jules
root - это словарь, поэтому нет, это не так, одна из вещей, которые вы считаете массивом, - это строка. запустите приложение в отладчике, получите трассировку стека, где он взорван, найдите трассировку стека, пока не дойдете до вашего кода. ObjectObject: forKey: не имеет ничего общего с этим сообщением об ошибке ... –
Да, ваше право, но я «Не знаю, как это сделать. – Jules