我一直收到这个错误。我通过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
答案 0 :(得分:56)
我已尝试清理目标,重置设备,重置xcode。
对随机目标的盲目攻击从来都不是一个好的调试技术。充其量,你将解决问题而不知道如何解决问题。在最坏的情况下,你会打破别的东西。
相反,找出问题是什么。对于“Cocoa错误”,您需要查看FoundationErrors.h和CoreDataErrors.h(以及未针对Cocoa Touch时的AppKitErrors.h)。前一个文件给出了Cocoa错误260的名称:
NSFileReadNoSuchFileError = 260, // Read error (no such file)
您无法获取该文件的属性,因为它不存在(在您的设备上)。
您可能希望修改问题,以包含创建存储到self.filePath
的路径的代码。
答案 1 :(得分:7)
这个解决方案解决了我的问题,希望它能帮到你。
答案 2 :(得分:5)
我知道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
答案 3 :(得分:1)
+(DataManager*)getSharedInstance{
if (!sharedInstance) {
sharedInstance = [[super allocWithZone:NULL]init];
[sharedInstance copyDatabaseIntoDocumentsDirectory];
}
return sharedInstance;
}
- (无效)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:表示在您指定的路径中找不到该文件(再次创建数据库然后添加您的项目)。
答案 4 :(得分:1)
在我的情况下,我的260错误是由于路径中的文件夹是camelCase。
在模拟器中,它在OSX下运行良好。 然而,在iOS设备上,案例变得非常重要。
即。 我引用了一个名为``@" / Data / somethings /"```的文件夹 在磁盘上这是/ data / somethings /
您必须为iOS保持大写/小写的一致性。 所以我必须确保它总是被称为/ data / somethings /
答案 5 :(得分:0)
可以快速删除此错误。请不要将数据库文件拖放到项目中。转到"添加文件"选项然后导入文件。我试过了,错误消失了......