我有一個同步NSFileWrapper文檔與iCloud的問題。我能夠創建我的包裝並將其保存到我無處不在的容器中。NSFileWrapper從iCloud失敗,並從本地目錄工作
當我嘗試從創建它的設備讀取它時,它可以工作。當我嘗試從iCloud上讀取另一臺設備時,它會崩潰。
一些代碼:
該功能增加的包裝容器用的NSString
- (void) addNSString:(NSString*)_string toFileWrapper:(NSFileWrapper*)_wrapper forKey:(NSString*)_key {
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_string];
if(data) {
[_wrapper addRegularFileWithContents:data preferredFilename:_key];
}
}
然後這裏是我如何對其進行解碼:
- (id) unarchiveObjectFromWrappers:(NSDictionary*)_wrappers withKey:(NSString*)_key {
id value = nil;
NSFileWrapper *wrapper = [_wrappers valueForKey:_key];
if(wrapper) {
NSData *data = [wrapper regularFileContents];
if(data) {
value = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
}
return value;
}
的解碼部分在一個設備上工作,而不在其他設備上工作(EXC_BAD_ACCESS當NSKeyedUnarc hiver試圖從NSData中取消歸檔。 NSData看起來不錯,它有適當的長度和一切,但當我嘗試記錄它的數據,例如它崩潰)。
我的猜測是,NSFileWrapper並沒有下載它的全部內容,只有它的結構,我不得不做一些事情使它可用。但我不知道是什麼。
任何想法?
========
編輯:
NSURLUbiquitousItemIsDownloadedKey說,該文件被下載,但如果我嘗試將其複製到沙盒失敗與此錯誤:「手術couldn」 T爲完成。錯誤的文件描述符」
所以文件或者不正確上傳到iCloud或無法正常下載...
我面臨着類似的問題,如果我嘗試閱讀無處不在容器(icloud的文檔文件夾):
相關的NSFileManager。如果我在運行NSMetadataQuery之後訪問它,我可以訪問這些文件。所以我猜,你直接用NSFileManager訪問文件? – auco
托馬斯,也許這是你的情況:http://stackoverflow.com/questions/8714525/cannot-sync-simple-text-file-with-icloud-bad-file-descriptor – brigadir