列挙型 NSMoviesDirectory または NSMusicDirectory の使用方法。ドキュメンテーションには、ios 4 以降で使用できると書かれていますが、私のアプリケーションではそこにファイルをコピーする方法が見つかりませんか? そして、それらを使用できないのに、なぜ Apple はそれらの列挙型を追加したのでしょうか?
2 に答える
1
デフォルトでは、「映画」、「音楽」、「写真」はディレクトリにありません。パスを作成し、データ ファイルを配置する必要があります。
例えば:NSMoviesDirectory
NSArray * paths = NSSearchPathForDirectoriesInDomains (NSMoviesDirectory,NSUserDomainMask, YES);
NSString * documentsDirectory = [paths objectAtIndex:0];
NSError * error;
if (![[NSFileManager defaultManager] fileExistsAtPath: documentsDirectory])
{
[[NSFileManager defaultManager] createDirectoryAtPath:documentsDirectory withIntermediateDirectories:NO attributes:nil error:&error];
NSString * resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sleep.mp4"];
[[NSFileManager defaultManager] copyItemAtPath:resourceDBFolderPath toPath:[documentsDirectory stringByAppendingPathComponent:@"sleep.mp4"] error:&error];
}
else
{
NSString * resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sleep.mp4"];
[[NSFileManager defaultManager] copyItemAtPath:resourceDBFolderPath toPath:[documentsDirectory stringByAppendingPathComponent:@"sleep.mp4"] error:&error];
}
于 2013-03-20T12:43:03.710 に答える
-1
サンプルを書くだけで、音楽ディレクトリ(または他の何か)はデフォルトでは存在しません。コードで作成する必要があります。標本、見本:
- (void)testDir
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSMusicDirectory, NSUserDomainMask, YES);
NSString *musicDirectory = [paths objectAtIndex:0];
NSFileManager *defaultFileManager = [NSFileManager defaultManager];
if (![defaultFileManager fileExistsAtPath:musicDirectory]) {
[defaultFileManager createDirectoryAtPath:musicDirectory withIntermediateDirectories:NO attributes:nil error:NULL];
}
NSString *testDataFilePath = [musicDirectory stringByAppendingPathComponent:@"test.mp3"];
unsigned int bufferLength = 1024;
void *buffer = malloc(1024 * sizeof(char));
NSData *testData = [[NSData alloc] initWithBytes:buffer length:bufferLength];
free(buffer); buffer = NULL;
if (![testData writeToFile:testDataFilePath atomically:NO]) {
NSLog(@"fail to save data");
}
[testData release]; testData = nil;
}
于 2013-03-20T12:34:00.103 に答える