У меня есть iPad, который считывает данные из базы данных SQL
. Следующий код работает отлично и извлекает 2 поля из каждой записи и считывает их в NSArray
.Чтение из базы данных SQL в NSArray
Теперь мне нужно прочитать 5 полей, и я не могу не думать, что есть лучший способ сделать это, а не запускать 5 отдельных запросов через php (файл getinfo.php с параметром выбора, установленным на выберите разные поля).
Любые указатели на лучший способ для этого?
NSString *strURLClass = [NSString stringWithFormat:@"%@%@", @"http://wwwaddress/getinfo.php?choice=1&schoolname=",obsSchoolName];
NSArray *observationsArrayClass = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:strURLClass]];
observationListFromSQL = [[NSMutableArray alloc]init];
NSEnumerator *enumForObsClass = [observationsArrayClass objectEnumerator];
NSString *strURLDate = [NSString stringWithFormat:@"%@%@", @"http://wwwaddress/getinfo.php?choice=5&schoolname=",obsSchoolName];
NSArray *observationsArrayDate = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:strURLDate]];
observationListFromSQL = [[NSMutableArray alloc]init];
NSEnumerator *enumForObsDate = [observationsArrayDate objectEnumerator];
id className, dateOfObs;
while (className = [enumForObsClass nextObject])
{
dateOfObs = [enumForObsDate nextObject];
[observationListFromSQL addObject:[NSDictionary dictionaryWithObjectsAndKeys:className, @"obsClass", dateOfObs, @"obsDate",nil]];
}
Спасибо. Это аккуратно и означает меньше кода, но он все еще запускает php-запрос 5 раз, если я хочу 5 полей. Может ли данные не передаваться из одного вызова файла php? – RGriffiths
@RichardGriffiths Это зависит от службы, предоставляющей данные: если она предоставляет вам возможность предоставить несколько вариантов в одном вызове и определяет способ декодирования возвращаемых данных, тогда ответ будет «да». Кроме того, если есть способ не предоставлять какие-либо варианты, верните все поля, а затем выберите пять полей, которые вы хотите, вы можете сэкономить на круговых поездках за счет получения большего количества данных (обычно это очень выгодный компромисс) , В противном случае вам потребуется выполнить несколько вызовов. – dasblinkenlight
Brillant. Очень полезно спасибо. Попытка вашего кода, и я получаю ошибку на dict = res [i]; и res [i] = dict; «Ожидаемый метод чтения элемента массива, который не найден на объекте типа« NSMutableDictionary * ». Также должна строка NSEnumerator * objEnum = [замечанияArrayClass objectEnumerator]; быть просто «наблюдениями»? – RGriffiths