Ответ 1
NSString *str = ((char *)sqlite3_column_text(compiledStatement, 1)) ? [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)] : nil;
Я хочу ограничить базу данных, когда в базе данных нет данных в строке, чем не может показать исключение. Я просто хочу ограничить значение 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 ' *** Первый стек вызовов броска:
NSString *str = ((char *)sqlite3_column_text(compiledStatement, 1)) ? [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)] : nil;
Вы можете использовать этот макрос:
#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>
Попробуйте это -
+ (id)validateNullFields:(id)value{
if (value != NULL && ![value isKindOfClass:[NSNull class]]) {
return value;
}
return nil;
}
Надеюсь, это поможет вам...
-(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 для пустых и НЕТ для некоторых значений.
Я дам вам самое лучшее и лучшее решение для вас. Даже если вы передадите что-нибудь на это, это даст вам хороший ответ. Поэтому вы можете просто использовать этот метод.
#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 = @" ";
}
}
Просто вызовите этот метод (со строкой (параметр)), куда вы хотите отправить данные в базу данных.