私のアプリでは、ファイルを自分のバンドルからドキュメントディレクトリにコピーして、それを変更したいと思っています。私は、このコードは動作するはずと仮定iPhone:リソースが見つかりません
+(BOOL) copyDB: (NSString*) pdbName {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSString *dbPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES) objectAtIndex: 0];
dbPath = [dbPath stringByAppendingPathComponent: @"myApp"];
dbPath = [dbPath stringByAppendingPathComponent: @"Profiles"];
dbPath = [dbPath stringByAppendingPathComponent: @"ES-EN"];
dbPath = [dbPath stringByAppendingPathExtension: @"prof"];
if([fileManager fileExistsAtPath: dbPath]) {
DebugLog(@"file exists at path %@", dbPath);
return FALSE;
}
NSString *defaultDBPath = [ [ [NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @"ES-EN"];
defaultDBPath = [defaultDBPath stringByAppendingPathExtension: @"prof"];
DebugLog(@"dbPath: %@", dbPath);
DebugLog(@"defaultDBPath: %@", defaultDBPath);
if(![fileManager fileExistsAtPath: defaultDBPath]) {
DebugLog(@"Cannot find resource file");
return FALSE;
}
BOOL success = [fileManager copyItemAtPath: defaultDBPath toPath: dbPath error: &error];
if (!success) {
DebugLog(@"!success: Failed to create writable database file with message '%@'.", [error localizedDescription]);
UIAlertView *msg = [[UIAlertView alloc]
initWithTitle:@"Error"
message: [NSString stringWithFormat: @"Failed to create writable database file with message '%@'.", [error localizedDescription] ]
delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[msg show];
[msg release];
return FALSE;
}
[ [UserProfile sharedUserProfile] writeInitialData: pdbName];
//Creating fruits folder
NSString *dicDir = [Fruits_Dir stringByAppendingPathComponent: pdbName];
//Does a directory exist?
if (![fileManager fileExistsAtPath: dicDir])
{
//Create a directory
DebugLog(@"Creating userName dir");
if (![fileManager createDirectoryAtPath: dicDir attributes:nil])
{
DebugLog(@"failed to create dicDir");
}
}
return TRUE;
}
:
は、ここに私のコードです。何とかそれはシミュレータ上で動作するはずですが、デバイス上で動作しません。リソースファイルが見つからないというログが表示されます。
何か問題がありますか?
ありがとうございました。
1つの違いがあります。コンピュータは大文字と小文字を区別しないことが多く、iPhoneでは大文字と小文字が区別されます。 I.あなたのリソースファイルは実際に "ES-EN.Prof"という名前になっていますか? – epatel
正確に "ES-EN.prof"という名前です... –
pathForResource:ofType:yieldとは何ですか? – mjhoy