2011-08-12 50 views
0

你能在這行代碼中找到一個bug嗎?它返回零! 該應用完全是沙盒,但下載文件夾訪問已啓用。NSFileManager錯誤?

NSArray*array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"/Downloads/"] error:NULL]; 
     //array==nil: Why? 

[編輯]問題:我不能進行測試。它發生在評論機器的Guest帳戶上。編譯後的二進制文件可能有問題,或者您有任何提示如何解決此問題?

+0

您可以在審覈團隊運行後寫入文件並獲取文件嗎?您可以使用[NSString writeToFile:atomically:encoding:error:]消息。我在下面編輯我的帖子 – Wizz

+0

'NSHomeDirectory()'返回的值是什麼? – Richard

+0

@Wizz我已經實現了一個方法,返回有關應用程序的一些信息(Wizz的回答也是錯誤之後)並將其寫入文件。現在我正在等待答案(在解析中心發佈)。我收到回覆後會再寫一條評論。 – user610246

回答

1

嘗試與錯誤句柄來讀取目錄檢查會發生什麼:

NSError *error = nil; 
NSArray*array = [[NSFileManager defaultManager] 
        contentsOfDirectoryAtPath: 
        [NSHomeDirectory() stringByAppendingPathComponent:@"/Downloads/"] 
             error:&error]; 
if (!array) 
    NSLog(@"ERROR: %@", [error description]); 

這會給你更詳細的描述出了什麼問題。

要登錄這個錯誤到一個文件quick'n'dirty使用下列消息:

[[error description] writeToFile:@"strangeerrors.log" 
    atomically:NO encoding:NSUTF8StringEncoding error:nil]; 
+0

謝謝,但很遺憾,我無法記錄這一點。問題在於我的機器上沒有發生這種情況。它發生在審查小組的一臺機器上。你能否給我一些建議現在可以做些什麼?我也編輯了我的問題。 – user610246

+1

你現在不能做任何事情。如果你的代碼忽略了系統提供的成功/失敗和任何錯誤,這是你做出的有意識的選擇,這是後果。你的代碼被破壞*,因爲它不會報告可能失敗的指令中容易獲得的系統級錯誤。按照Wizz的建議修復您的代碼(完成並記錄日誌),發佈更新,然後如果問題再次發生,請向用戶發送指示,以發送您的控制檯日誌副本。 –

1

您是否嘗試過與

[@"~/Downloads" stringByExpandingTildeInPath] 

更換

[NSHomeDirectory() stringByAppendingPathComponent:@"/Downloads/"] 

+0

感謝您的幫助。可悲的是,我不知道這是問題還是OfDirectoryAtPath:error:方法的內容。所以我不得不問我曾問邁克的那些問題。我是否應該嘗試你的例子(我必須重新提交它),是否可以/正確地解決沙盒中的符號鏈接,我應該嘗試另一個目錄的枚舉,還是應該簡單地聯繫Apple DTS?或者你知道爲什麼該應用在我的Mac上表現不同嗎? – user610246

0

這裏幾乎肯定不是真正的問題,但有爭議的是,將@"Downloads/"附加爲路徑組件,而不是使用前導斜槓更有意義。在可可的眼睛,要求的@"/Downloads/"組件會給你:

@"/" 
@"Downloads" 

這可能並非您的本意。

+0

感謝您的回答。你認爲你的榜樣會有所作爲嗎?我已經通過[NSSearchForDirectoriesInDomains(NSDownloadDirectory,NSUserDomainMask,YES)objectAtIndex:0]嘗試了它並解析了符號鏈接,因爲文檔說它「不遍歷符號鏈接」,但是這也失敗了。我是否應該嘗試你的例子(我必須重新提交它),是否可以/正確地解決沙盒中的符號鏈接,我應該嘗試另一個目錄的枚舉,還是應該簡單地聯繫Apple DTS?或者你知道爲什麼該應用在我的Mac上表現不同嗎? – user610246

1

當追加路徑組件時,不需要放入任何斜線。它只是:

[NSHomeDirectory() stringByAppendingPathComponent:@"Downloads"] ... 

適合我!

相關問題