我正在加载 JSON,但我想检查 json 中的
"URL": "",
是否为空,有时 ID 为空,我该如何检查?
if(URL == HOW TO CHECK IF EMPTY?)
{
}
else
{
}
错误:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
嗯,试试吧
if ([URL isEqualToString:@"The URL?"]) {
如果 URL 对象是字符串,则可以使用其中之一,
if([string length] == 0) { //empty }
或
if([string isEqualToString:@""]) { // empty }
如果URL对象是NSURL,则可以使用:
if([[url absoluteString] isEqualToString:@""]) { //empty }
if (URL == [NSNull null]) {
//...
} else {
//...
}
或者
if (URL == nil) {
//...
} else {
//...
}
或者检查 URL 的长度
在处理 JSON 数据时,我往往非常小心。假设我有一个 JSON 反序列化为 NSDictionary。这样,我需要从字典中提取与键“URL”关联的字符串并将其转换为 NSURL。此外,我对 JSON 或字符串值不是 100% 有信心。
我会做这样的事情:
NSURL *URL = nil;
id URLObject = [JSON valueForKey:@"URL"];
if ([URLObject isKindOfClass:[NSString class]] && [URLObject length] > 0) {
URLObject = [URLObject stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
URLObject = [URLObject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
URL = [NSURL URLWithString:URLObject];
}
此后,URL 将具有 nil 或有效 URL。 -isKindOfClass:清除 NSDictionary、NSArray、NSNumber 或 NSNull 的值。 -length > 0 过滤掉空字符串(正如你所知,这可能会弄乱 NSURL)。解码然后重新编码 URL 转义的额外偏执可以处理部分编码的 URL。
if (url.absoluteString.length==0)
{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error" message:@"Please enter a url" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[alert show];
}
对于 Swift 5 和 Swift 4 使用此
var UrlUploadVideo = NSURL()
if UrlUploadVideo.absoluteString == "" {
// your code
}
根据存储方式,您可能需要验证它是否为 null (
URL == nil
) 或者字符串是否为空。假设您的 URL 存储在 NSString 中,您会选择类似以下内容:
BOOL empty = URL == nil || [URL length] == 0;
试试这个。这对我有用。
NSURL *url;
if ([url path])
{
// url is not empty
}
else
{
// url is empty
}
guard let url = URL(string: urlStr) else { return }