我在使用dataWithContentsOfURL
時遇到問題。 我正在從循環中加載一些來自互聯網的圖像。 問題是:如果URL中的圖像不存在,dataWithContentsOfURL
不會按預期返回零。蘋果引用說如果無法創建NSData
,它返回nil。 下面的代碼:dataWithContentsOfURL當URL爲空時返回值不爲零
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;
}
你知道爲什麼該方法不返回零如果在URL中的文件不存在?
第二個問題:像我一樣使用字符串NSURL
和NSData
是否合理?我想出於記憶的原因,這將是最好的方式。
謝謝你在前進, 尼科斯
編輯:爲循環變量的代碼之前被定義,循環工作正常。變量rootURL
也是頭中定義的常量。該URL構建得很好,它的工作原理。
如果蘋果說「如果NSData無法創建,它返回nil」,這可能意味着如果無法創建NSData對象,則返回nil,而如果無法獲取URL,則返回nil。 – Adrian 2010-07-06 16:47:55