Я прочитал этот вопрос и внедрил подход, который был сформулирован относительно установки кода статуса ответа на 278, чтобы избежать прозрачности работы браузера с переадресацией. Несмотря на то, что это сработало, я был немного недоволен, так как это немного взломал.
После того, как я снова начал копаться, я бросил этот подход и использовал JSON . В этом случае все ответы на запросы ajax имеют код состояния 200, а тело ответа содержит объект JSON, который построен на сервере. Javascript на клиенте может затем использовать объект JSON, чтобы решить, что ему нужно делать.
У меня была аналогичная проблема с вашей. Я выполняю запрос ajax, который имеет 2 возможных ответа: один, который перенаправляет браузер на новую страницу и заменяет существующую HTML-форму на текущей странице новой. Код jquery для этого выглядит примерно так:
$.ajax({
type: "POST",
url: reqUrl,
data: reqBody,
dataType: "json",
success: function(data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
}
else {
// data.form contains the HTML for the replacement form
$("#myform").replaceWith(data.form);
}
}
});
Объект «данные» объекта JSON построен на сервере, чтобы иметь 2 члена: data.redirect и data.form. Я нашел этот подход намного лучше.
NSMutableArray только содержит объекты, таким образом, Вы хотите, чтобы массив был загружен объектами NSNumber. Создайте каждый NSNumber для содержания двойного, затем добавляют его к массиву. Возможно, что-то вроде этого.
NSMutableArray *array = [[NSMutableArray alloc] init];
NSNumber *num = [NSNumber numberWithFloat:10.0f];
[array addObject:num];
Повторение по мере необходимости.
Используйте NSNumber для обертывания плавания, потому что для словаря нужен объект:
[myDictionary setObject:[NSNumber numberWithFloat:0.2f] forKey:@"theFloat"];
/* or */
[myDictionary setObject:@0.2f forKey:@"theFloat"];
получают его путем отправки floatValue:
float theFloat = [[myDictionary objectForKey:@"theFloat"] floatValue];
Код не тестируется.
можно перенести много других типов данных в NSNumber также, проверить документация . Существует также NSValue для некоторых структур как NSPoint и NSRect.
В Какао NSMutableDictionary (и все наборы, действительно) требуют объектов как значений, таким образом, Вы не можете просто передать никакой другой тип данных. И как sjmulder и как предложенный Ryan, можно перенести скалярные величины в экземпляры NSNumber (для числа) и NSValue для других объектов.
, Если бы Вы представляете десятичное число для чего-то как цена, я предложил бы также смотреть на и использовать NSDecimalNumber. Можно затем избежать проблем погрешности с плавающей точкой, и можно обычно использовать и хранить "значение" как NSDecimalNumber вместо того, чтобы представить его с примитивом в коде.
, Например:
// somewhere
NSDecimalNumber* price = [[NSDecimalNumber decimalNumberWithString:@"3.50"] retain];
NSMutableArray* prices= [[NSMutableArray array] retain];
// ...
[prices addObject:price];