Быстрый ответ:
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureReconizer = UITapGestureRecognizer(target: self, action: "tap:")
view.addGestureRecognizer(tapGestureReconizer)
}
func tap(sender: UITapGestureRecognizer) {
view.endEditing(true)
}
Нет стандарта для кодов возврата. Вам нужно будет выяснить, что означает -4 в этой конкретной хранимой процедуре. На самом деле, не все коды возврата являются ошибками.
РЕДАКТИРОВАТЬ: counter-example
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[RetValTest]
AS
BEGIN
select 1/0;
END
GO
Выполнение:
DECLARE @return_value int
EXEC @return_value = [dbo].[RetValTest]
SELECT 'Return Value' = @return_value
GO
Результат:
Msg 8134, Level 16, State 1, Procedure RetValTest, Line 9
Divide by zero error encountered.
Это для SQL Server 2008.
Некоторые исследования показывают, что такое поведение можно оставить. из SQL Server 6.0. Если это так, то вы можете решить для себя, насколько он может быть надежным, учитывая, что они перестали документировать его (и перестали гарантировать его точность) так давно.
Мое «исследование» должно быть, с благодарностью, SQL Server MVP Тибор Караси . Его источник - это электронная документация по SQL Server 6.5. В разделе «Язык управления потоком», RETURN он обнаружил
«SQL Server резервирует 0 для обозначения успешного возврата и резервирует отрицательные значения от - 1 до - 99, чтобы указать разные причины неудач. Если не определенное пользователем возвращаемое значение при условии, что используется значение SQL Server. Пользовательский статус возврата значения не должны конфликтовать со значениями, зарезервированными SQL Server. В значения от 0 до -14 в настоящее время используются.
Если у вас есть оператор RETURN с явным возвращаемым значением, это, конечно, возврат значение.
Но если оператора RETURN нет, но во время выполнения возникает ошибка, возвращаемое значение - 10 минус уровень серьезности ошибки. Деление на ноль - это уровень 16, поэтому возвращаемое значение - -6. Ошибки прав доступа - типичный уровень 14, поэтому возвращаемое значение - 4.
Как вы можете догадаться, это не очень полезно, но это: 0 - успех, а все остальное - ошибка.
Хороший совет, который я часто слышал процитировать, звучит так:
Будьте либеральны в том, что вы принимаете, и точнее в том, что вы предоставляете.
С точки зрения разработки вашего API , Я бы посоветовал вам возвращать интерфейс, а не конкретный тип.
Взяв ваш пример метода, я бы переписал его следующим образом:
public IList<object> Foo()
{
List<object> retList = new List<object>();
// Blah, blah, [snip]
return retList;
}
Ключ в том, что ваш внутренний выбор реализации - использовать список - не раскрывается вызывающему, но вы возвращаете соответствующий интерфейс.
Собственные рекомендации Microsoft по разработке фреймворка не рекомендуют возвращать определенные типы, отдавая предпочтение интерфейсам. (К сожалению, мне не удалось найти для этого ссылку)
Точно так же ваши параметры должны быть как можно более общими - вместо того, чтобы принимать массив, примите IEnumerable соответствующего типа. у вас нет оператора RETURN в ваша сохраненная процедура?
Что-то, что я нашел, было по этой ссылке www.redware.com/handbooks/sql_server_handbook/sql_server_stored_procedures.html
SQL Server будет возвращать по умолчанию значение до нуля. Возвращаемые значения: обычно используется для возврата флага состояния из хранимой процедуры с ненулевое значение, обычно указывающее сбой во время обработки.
Возвращаемые значения сложно доступ с использованием ODBC, их использование рекомендуется только для того, чтобы вернуть успех или сбой хранимой процедуры при общении с другими сохраненными процедуры.
По этой ссылке - sqlserverpedia.com/wiki/Stored_Procedures _-_ Output_Parameters _ & _ Return_Values
Возвращаемые значения от -99 до 0 являются зарезервировано для внутреннего использования SQL Server. Вы можете создавать свои собственные параметры который может быть передан обратно вызывающему
Также еще одна ссылка (я полагаю) от @Erland Sommarskog www.sommarskog.se/error-handling-I.html
Возвращаемые значения из хранимых процедур
Все хранимые процедуры имеют возврат значение, определяемое ВОЗВРАТОМ заявление. Оператор RETURN принимает один необязательный аргумент, который должен быть числовое значение. Если вы скажете ВОЗВРАТ без указания значения, возврат значение 0, если во время исполнение. Если во время выполнение процедуры, возврат значение может быть 0, или это может быть отрицательное число. То же верно, если нет оператора RETURN вообще в процедура: возвращаемое значение может быть отрицательное число или может быть 0.
Имеют ли эти отрицательные числа любое значение, немного сложно сказать. Раньше было так, что возвращаемые значения от -1 до -99 были зарезервированы для возвращаемых значений, сгенерированных системой, и электронной документации для более ранних версий из значений, указанных в SQL Server для значения от -1 до -14. Однако книги Online for SQL 2000 не говорит ни о каких такие оговорки, и не объясните, что будет означать от -1 до -14.
За некоторыми исключениями, системные хранимые процедуры, которые Microsoft поставляется с возвратом SQL Server 0 для обозначения успеха и любое ненулевое значение значение указывает на сбой.
Получение информации об ошибке
Также, если вам нужно выяснить, что это за ошибка (а не то, что означает -6), вы можете попробовать поместить свой sql в ловушку попытки, т.е.
begin try
select 1/0 as 'an error'
end try
begin catch
select ERROR_NUMBER() as 'ERROR_NUMBER',
ERROR_SEVERITY() as 'ERROR_SEVERITY',
ERROR_STATE() as 'ERROR_STATE',
LEFT(ERROR_PROCEDURE(),50) as 'ERROR_PROCEDURE',
ERROR_LINE() as 'ERROR_LINE' ,
LEFT(ERROR_MESSAGE(),40) as 'ERROR_MESSAGE'
end catch
Я не уверен, что есть способ узнать это, не спрашивая разработчиков SQL Server. Это что-то более низкое, чем ваш хранимый процесс, который оценивает то, что вы его отправляете, и генерирует этот код возврата. Если в вашем коде специально не указано RETURN -4 , вероятно, оно исходит от анализатора SQL.