2012-10-31 50 views
0

我已經在模擬器4.3,5.0,5.1和6.0上爲iPhone,iPad和iPad測試了我的應用程序。它按預期工作。但是在我所有的設備上它都不起作用。Xcode - 模擬器與讀取文件的設備之間的區別

我知道在設備上的文件名區分大小寫。使用的常量DATA_FILE和類型都是小寫,打開後文件句柄不是零。 正如我所見,正確的文件定位後沒有實際的讀數。爲什麼不?

這是代碼,減少到最小以顯示問題。

NSLog(@"getData, index = %lu", index); 
NSFileHandle *fhIndex = [NSFileHandle fileHandleForReadingAtPath: [[NSBundle mainBundle] pathForResource: DATA_FILE ofType:@"idx"]]; 

u_char indexData[4]; 
NSLog(@"index*4 = %lu", (index * 4)); 
[fhIndex seekToFileOffset: (index * 4)]; 
unsigned long long test = [fhIndex offsetInFile]; 
NSLog(@"FilePos = %llu",test); 
[[fhIndex readDataOfLength: 4] getBytes: indexData length: 4]; 
test = [fhIndex offsetInFile]; 
NSLog(@"FilePos = %llu",test); 
NSLog(@"indexData = %i %i %i %i", indexData[0], indexData[1], indexData[2], indexData[3]); 

一個索引(無符號長整數)被賦予例程,在這種情況下索引= 62825。該程序尋求定位索引* 4,然後讀取下4個字節。在設備上,這四個字節不會被讀取!

在模擬器

調試器輸出:

2012-10-31 10:46:24.557 program[469:12003] getData, index = 62825 
    2012-10-31 10:46:24.559 program[469:12003] index*4 = 251300 
    2012-10-31 10:46:24.559 program[469:12003] FilePos = 251300 
    2012-10-31 10:46:24.580 program[469:12003] FilePos = 251304 
    2012-10-31 10:46:24.581 program[469:12003] indexData = 0 73 130 174 

...並在設備上:

2012-10-31 10:41:57.776 program[2942:907] getData, index = 62825 
    2012-10-31 10:41:57.780 program[2942:907] index*4 = 251300 
    2012-10-31 10:41:57.782 program[2942:907] FilePos = 251300 
    2012-10-31 10:41:57.783 program[2942:907] FilePos = 251300 
    2012-10-31 10:41:57.784 program[2942:907] indexData = 248 10 18 0 

正如你可以在設備的輸出看,該文件的位置後不改變閱讀,這意味着,實際上沒有閱讀!

+0

現在我檢查了該文件的fileSize。在模擬器中,我獲得了283.020(這是正確的大小),但在設備上我只獲得了220.024的大小。因爲我把filepos設置在最後,所以沒有讀數。我從我的設備中刪除了應用程序並重新安裝。相同的結果,相同的壞檔案。 我已經刪除了Xcode中的文件引用並再次添加。同樣的結果! 爲什麼我在設備上獲取錯誤的文件大小,但不在模擬器中?任何想法? – thpitsch

回答

0

錯誤的文件大小引導我朝着正確的方向發展。 刪除Build目錄後,程序現在正在模擬器和設備上工作。

相關問題