Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 当URL为空时,dataWithContentsOfURL返回值不为零_Objective C_Iphone_Cocoa - Fatal编程技术网

Objective c 当URL为空时,dataWithContentsOfURL返回值不为零

Objective c 当URL为空时,dataWithContentsOfURL返回值不为零,objective-c,iphone,cocoa,Objective C,Iphone,Cocoa,我在使用带有URL内容的数据时遇到问题。 我正在从互联网上循环加载一些图像。 问题是:如果URL上的图像不存在,dataWithContentsOfURL不会像预期的那样返回nil。苹果参考称,如果无法创建NSData,它将返回nil。 代码如下: NSString *TermineImgFileName = nil; NSString *TermineImgPath = nil; NSURL *TermineImgURL = nil; NSData *TermineImg = nil;

我在使用带有URL内容的数据时遇到问题。 我正在从互联网上循环加载一些图像。 问题是:如果URL上的图像不存在,
dataWithContentsOfURL
不会像预期的那样返回nil。苹果参考称,如果无法创建
NSData
,它将返回nil。 代码如下:

NSString *TermineImgFileName = nil;
NSString *TermineImgPath = nil;
NSURL *TermineImgURL = nil;
NSData *TermineImg = nil;   
for (deviceTermineHighInt; deviceTermineHighInt <= serverTermineHighInt; deviceTermineHighInt++) {
    TermineImgFileName = [NSString stringWithFormat:@"Termine%i.png", deviceTermineHighInt];
    TermineImgURL = [rootURL URLByAppendingPathComponent:TermineImgFileName];
    TermineImg = [NSData dataWithContentsOfURL:TermineImgURL];
    if (TermineImg != nil) {
        TermineImgPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:TermineImgFileName];
        [TermineImg writeToFile:TermineImgPath atomically:YES];
        updateCount += 1;
        NSLog(@"File %@ saved", TermineImgFileName);
    }
    else {
        NSLog(@"Write Error");
    }               
    TermineImg = nil;
}
NSString*TermineImgFileName=nil;
NSString*TermineImgPath=nil;
NSURL*TermineImgURL=nil;
NSData*TermineImg=nil;
对于(deviceTermineHighInt;deviceTermineHighInt测试代码(在一次运行中)。如果映像不存在,我会得到预期的写入错误。返回的是(NULL)。我认为在这种情况下,它的作用相同,并指向零值

有一个stackoverflow post试图解释它测试代码(在一次运行中)。如果映像不存在,我会得到预期的写入错误。返回的是(NULL)。我认为在这种情况下,它的作用相同,并指向零值


有一篇stackoverflow文章试图解释它

我想说的问题是,如果您请求一个不存在的映像,服务器实际上会做什么。

如果它给你一个404,
-dataWithContentsOfURL:
应该返回
nil
,但是如果它没有返回,那么将创建一个带有结果的
NSData
实例,它恰好不包含任何有用的图像数据。

我想说的问题是,如果你请求一个不存在的图像,服务器实际上会做什么。

如果它给你一个404,
-dataWithContentsOfURL:
应该返回
nil
,但是如果它没有,将创建一个带有结果的
NSData
实例,它恰好不包含任何有用的图像数据。

如果苹果说“如果无法创建NSData,它将返回nil”,这可能意味着如果无法创建NSData对象,它将返回nil,而不是如果无法获取URL。如果苹果说“如果无法创建NSData,它将返回nil”,这可能意味着如果无法创建NSData对象,而不是无法获取URL,它将返回nil。奇怪的行为!在我的循环中,也创建了第一个映像,它不在服务器上,但使用了第二个文件的数据(映像)。(当循环运行两次,第一个图像不存在,第二个图像存在)明天我将用新鲜的大脑重新思考这个例程。:)markhunte:
NULL
nil
是等效的(不同的目的,但都是空指针).NSNull对象与它们不同;
nil
表示没有对象。奇怪的行为!在我的循环中,也创建了第一个映像,它不在服务器上,但使用了第二个文件的数据(映像)。(循环运行两次,第一个映像不存在,第二个映像存在)明天我将用新的头脑重新思考这个程序。:)markhunte:
NULL
nil
是等效的(不同的目的,但都是空指针)。NSNull对象与它们不等价
nil
表示没有对象。有趣的方法!明天我将用不同的服务器进行测试。你说得对!问题出在服务器端。我今天试图打开一个不存在的文件News1.png,而服务器加载了News2.png。非常感谢你!有趣的方法!明天我将用不同的服务器进行测试。你说得对!问题出在服务器端。我今天试图打开一个不存在的文件News1.png,而服务器加载了News2.png。非常感谢你!