// put this block in your loop
try
{
// do your insert
}
catch(SqlException ex)
{
// the exception alone won't tell you why it failed...
if(ex.Number == 2627) // <-- but this will
{
//Violation of primary key. Handle Exception
}
}
EDIT:
Вы также можете просто проверить компонент сообщения исключения. Что-то вроде этого:
if (ex.Message.Contains("UniqueConstraint")) // do stuff
Сделайте это:
label.text = [NSString stringWithFormat:@"%d", count];
Marc Charbonneau записал:
Имеют в виду, что "%d" будет только работать над 32 битами. Как только Вы начинаете использовать NSInteger для совместимости, если Вы когда-нибудь компилируете для платформы на 64 бита, необходимо использовать "%ld" в качестве спецификатора формата.
Интересный, спасибо за подсказку, я использовал "%d" с моим NSInteger
с!
документация SDK также рекомендует бросить NSInteger
к long
в этом случае (для соответствия "%ld"), например:
NSInteger i = 42;
label.text = [NSString stringWithFormat:@"%ld", (long)i];
Источник: Строковое Руководство по программированию для Какао - Спецификаторы Формата строки (Требует регистрации разработчика iPhone)
Следует иметь в виду, что "%d" будет только работать над 32 битами. Как только Вы начинаете использовать NSInteger для совместимости, если Вы когда-нибудь компилируете для платформы на 64 бита, необходимо использовать "%ld" в качестве спецификатора формата.
Вы хотите использовать %d
или %i
для целых чисел. %@
используется для объектов.
стоит отметить, тем не менее, что следующий код выполнит ту же задачу и намного более ясен.
label.intValue = count;
И для комичного значения:
label.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:count]];
(Хотя могло быть полезно, если однажды Вы имеете дело с NSNumber's)
Отрывок, Вы отправили просто образец для показа то, что Вы пытаетесь сделать?
причина, которую я спрашиваю, состоит в том, что Вы назвали метод increment
, но Вы, кажется, используете это, чтобы установить значение текстовой метки, вместо того, чтобы увеличить значение.
, При попытке сделать, что-то более сложное - такое как устанавливание целочисленного значения и наличие маркировки отображает это значение, Вы могли рассмотреть использование привязки. например,
Вы объявляете свойство count
и Ваш increment
, действие устанавливает это значение к тому, что, и затем в IB, Вы связываете текст маркировки со значением count
. Пока Вы следуете за Кодированием значения ключа (KVC) с count
, Вы не должны писать код для обновления дисплея маркировки. И с точки зрения дизайна у Вас есть более свободная связь.