У меня есть 2 объекта, AddressBook и AddressCard.Адресная карта имеет имя свойства, адрес электронной почты и день рождения.В AddressBook есть метод поиска, который принимает строку в качестве аргумента и ищет каждую добавленную AddressCard на предмет соответствия.В этом методе поиска я хотел бы иметь NSArray каждого из полей, которые я хотел бы найти в AddressCards.Затем переберите каждую запись AddressBook, проверьте каждое поле в моем массиве на соответствие аргументу поиска.Проблема в том, что я не знаю, как получить динамический доступ к свойству объектов с помощью строки - возможно ли это в Objective-C или мне следует попытаться сделать это по-другому?Я понимаю, что могу просто использовать операторы IF, но это не масштабируемое решение.
Вот мой метод поиска:
-(AddressCard *)lookup:(NSString *)aName
{
NSArray *fields = [[NSArray alloc] initWithObjects:@"name",@"email",@"birthday",nil];
BOOL STATUS = NO;
for(AddressCard *entry in book)
{
for(int i = 0; i < [fields count]; i++)
{
NSString *fieldName = [[NSString alloc] initWithString:[fields objectAtIndex:i]];
NSRange range = [[entry fieldName] rangeOfString:aName];
if(range.location != NSNotFound)//Important to not directly test the NSRange struct, but one of its properties(BAD_ACCESS)
{
NSLog(@"'%@' found in field:%@ at range:%i,%i",aName,fieldName,range.location,range.length);
STATUS = YES;
return entry;
}
[n release];
}
}
if(!STATUS)
NSLog(@"'%@' not found in %@ address book",aName, bookName);
return nil;
}
Любые идеи или предложения приветствуются, спасибо!