Каков правильный способ проверки нулевой строки в базе данных в Objective C

Я хочу ограничить базу данных, когда в базе данных нет данных в строке, чем не может показать исключение. Я просто хочу ограничить значение Null

  if ([[Utility checkNullValues:tInfo.product_price]isEqualToString:@""]) {
        [Utility showAlertView:@"Sorry" message:@"No Product You Buy." viewcontroller:self];
      }

И это ошибка:

2015-06-03 12: 35: 38.320 NiColi [28363: 2438247] * Завершение приложения из-за неперехваченного исключения "NSInvalidArgumentException", причина: "*+ [NSString stringWithUTF8String:]: NULL cString ' *** Первый стек вызовов броска:

Ответ 1

NSString *str = ((char *)sqlite3_column_text(compiledStatement, 1)) ? [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)] : nil;

Ответ 2

Вы можете использовать этот макрос:

#define NULL_VALIDATION(obj) ({ __typeof__ (obj) __obj = (obj); __obj == [NSNull null] ? nil : obj; })

Этот макрос вернет nil, если переданный объект NULL или иначе, сам объект. Использование:

if ([NULL_VALIDATION(tInfo.product_price) length] == 0) { 
   [Utility showAlertView:@"Sorry" message:@"No Product You Buy." viewcontroller:self];
}

P.S: Не забудьте импортировать <objc/runtime.h>

Ответ 3

Попробуйте это -

+ (id)validateNullFields:(id)value{

    if (value != NULL && ![value isKindOfClass:[NSNull class]]) {
        return  value;
    }

    return nil;
}

Ответ 4

Надеюсь, это поможет вам...

-(BOOL)isNullString:(NSString *)dbString{

    if ([dbString isKindOfClass:[NSNull class]]) {
        return YES;
    }
    else if (dbString == nil){
        return YES;
    }
    else if ([dbString isEqualToString:@""]){
        return YES;
    }
    else if ([dbString isEqualToString:@"null"]){
        return YES;
    }
    else if ([dbString isEqualToString:@"(null)"]){
        return YES;
    }
    else if ([dbString caseInsensitiveCompare:@"NULL"] == NSOrderedSame){
        return YES;
    }
    else if (dbString == 0){
        return YES;
    }
    else{
        return NO;
    }
    return NO;
}

Он возвращает YES для пустых и НЕТ для некоторых значений.

Ответ 5

Я дам вам самое лучшее и лучшее решение для вас. Даже если вы передадите что-нибудь на это, это даст вам хороший ответ. Поэтому вы можете просто использовать этот метод.

#pragma mark - check string is empty or not
- (void)checkEmpty:(NSString *)check
{
    @try 
    {
      if (check.length==0)
        check = @" ";
      if([check isEqual:[NSNull null]])
        check = @" ";
    }
    @catch (NSException *exception) 
    {
      check = @" ";
    }
}

Просто вызовите этот метод (со строкой (параметр)), куда вы хотите отправить данные в базу данных.