このエラーが発生し続けます。 FTP経由でサーバーにアップロードしています。それは正常に動作し、シミュレーターで実行中に完全にアップロードしますが、iPhoneでプロビジョニングすると、次のように表示されます:Error Occurred. Upload failed: The operation couldn’t be completed. (Cocoa error 260.)
助言がありますか?私は何時間もデバッグと調査を続けてきましたが、これを理解することはできません。ターゲットのクリーニング、デバイスのリセット、xcodeのリセットを試しました。
私が絞り込んだことの一つは:
NSError *attributesError = nil;
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:self.filePath error:&attributesError];
if (attributesError) {
[self failWithError:attributesError];
return;
}
デバイスのattributesErrorはtrue、シミュレータではfalseです
ターゲットのクリーニング、デバイスのリセット、xcodeのリセットを試しました。
ランダムなターゲットでのブラインドドキドキは、優れたデバッグ手法にはなりません。せいぜい、問題を修正し、方法がわからないだけです。最悪の場合、あなたは何か他のものを壊すでしょう。
代わりに、問題の内容を調べてください。 「Cocoaエラー」の場合は、FoundationErrors.hおよびCoreDataErrors.h(およびCocoa Touchをターゲットにしていない場合はAppKitErrors.h)を確認する必要があります。前のファイルは、Cocoaエラー260の名前を示しています。
NSFileReadNoSuchFileError = 260, // Read error (no such file)
(デバイス上に)ファイルが存在しないため、そのファイルの属性を取得できません。
質問を編集して、self.filePath
に保存するパスを作成するコードを含めることができます。
この解決策は私の問題を解決します。
Peter Hoseyがすでにこの質問を解決していることを知っていますが、何か追加したいと思います。エラーをすばやく見つけたい場合は、ターミナルで簡単なコマンドを使用して、その定義を見つけることができます。
ief2s-iMac:Frameworks ief2$ cd /System/Library/Frameworks
ief2s-iMac:Frameworks ief2$ grep '260' $(find . -name "*Errors.h" )
必要なエラーコードで「260」を変更します。上記のコマンドは次を返します。
ief2s-iMac:Frameworks ief2$ grep '260' $(find . -name "*Errors.h" )
./CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h: midiDupIDErr = -260, /*duplicate client ID*/
./CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h: kECONNREFUSEDErr = -3260, /* Connection refused */
./Foundation.framework/Versions/C/Headers/FoundationErrors.h: NSFileReadNoSuchFileError = 260, // Read error (no such file)
ief2s-iMac:Frameworks ief2$
もちろん、 'Error = 260'でgrepを実行することで、より適切に指定できます。
ief2s-iMac:Frameworks ief2$ grep 'Error = 260' `find . -name "*Errors.h"`
./Foundation.framework/Versions/C/Headers/FoundationErrors.h: NSFileReadNoSuchFileError = 260, // Read error (no such file)
ief2s-iMac:Frameworks ief2$
これがあなたのさらなる発展に役立つことを願っています、ief2
私の場合、260エラーはパスBeing camelCase内のフォルダーが原因でした。
シミュレータでは、OSXで問題なく動作しました。ただし、iOSデバイスでは、ケースが非常に重要になります。
I.E.私は「@」/ Data/somethings /「」というフォルダを参照していました `ディスク上では/ data/somethings /でした
IOSでは大文字と小文字の一貫性を維持する必要があります。だから私はそれが常に/ data/somethings /と呼ばれることを確認しなければなりませんでした
+(DataManager*)getSharedInstance{
if (!sharedInstance) {
sharedInstance = [[super allocWithZone:NULL]init];
[sharedInstance copyDatabaseIntoDocumentsDirectory];
}
return sharedInstance;
}
-(void)copyDatabaseIntoDocumentsDirectory {
// Set the documents directory path to the documentsDirectory property.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
self.documentsDirectory = [paths objectAtIndex:0];
// Keep the database filename.
self.databaseFilename = DATABASE_FILENAME;
// Check if the database file exists in the documents directory.
destinationPath = [self.documentsDirectory stringByAppendingPathComponent:self.databaseFilename];
if (![[NSFileManager defaultManager] fileExistsAtPath:destinationPath]) {
// The database file does not exist in the documents directory, so copy it from the main bundle now.
NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseFilename];
NSError *error;
[[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:destinationPath error:&error];
// Check if any error occurred during copying and display it.
if (error != nil) {
NSLog(@"%@", [error localizedDescription]);
}
}
}
注:エラー260:指定したパスにファイルが見つからなかったことを意味します(もう一度DBを作成してからプロジェクトを追加してください)。
このエラーはすぐに取り除くことができます。データベースファイルをプロジェクトにドラッグアンドドロップしないでください。 [ファイルを追加]オプションに移動して、ファイルをインポートします。私はこれを試したところ、エラーはなくなりました。