ユーザーのフォト ライブラリから画像を取得し、その画像をドキュメント ディレクトリに保存しています。現在、ユーザーがテキスト フィールドに入力した内容に基づいて画像に名前を付けています。これは機能しますが、テキスト フィールドは実際には画像の適切な名前ではありません。写真に名前を付けるために、ある種の一意の識別子を使用したいと思います。
アイデアや提案はありますか?ユーザーが大量の写真を保存するときに競合が発生したくないだけです。
ユーザーのフォト ライブラリから画像を取得し、その画像をドキュメント ディレクトリに保存しています。現在、ユーザーがテキスト フィールドに入力した内容に基づいて画像に名前を付けています。これは機能しますが、テキスト フィールドは実際には画像の適切な名前ではありません。写真に名前を付けるために、ある種の一意の識別子を使用したいと思います。
アイデアや提案はありますか?ユーザーが大量の写真を保存するときに競合が発生したくないだけです。
1 つの方法は、UUID を使用することです。以下に例を示します。
// return a new autoreleased UUID string
- (NSString *)generateUuidString
{
// create a new UUID which you own
CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
// create a new CFStringRef (toll-free bridged to NSString)
// that you own
NSString *uuidString = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);
// transfer ownership of the string
// to the autorelease pool
[uuidString autorelease];
// release the UUID
CFRelease(uuid);
return uuidString;
}
またはARCバージョン:
// Create universally unique identifier (object)
CFUUIDRef uuidObject = CFUUIDCreate(kCFAllocatorDefault);
// Get the string representation of CFUUID object.
NSString *uuidStr = (__bridge_transfer NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuidObject);
CFRelease(uuidObject);
さらに簡単な iOS6+ ソリューション:
NSString *UUID = [[NSUUID UUID] UUIDString];
詳細はこちら: http://blog.ablepear.com/2010/09/creating-guid-or-uuid-in-objective-c.htmlおよびこちら: http://en.wikipedia.org/wiki/Universally_unique_identifier
昨日、まったく同じ問題をいくつかのバリエーションで解決する必要がありました。写真は Dropbox にアップロードされる予定だったので、画像を一時ディレクトリに保存します。
私がしたことは、UNIX エポックからイメージの名前を変更するまでの秒数を取得することでした。
これが全体の方法です。ニーズに合わせて変更する必要がありますが、問題を解決するために必要なものを取得する必要があります。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *imageToUpload = [info objectForKey:UIImagePickerControllerOriginalImage];
NSDate *dateForPictureName = [NSDate date];
NSTimeInterval timeInterval = [dateForPictureName timeIntervalSince1970];
NSMutableString *fileName = [NSMutableString stringWithFormat:@"%f", timeInterval];
NSRange thePeriod = [fileName rangeOfString:@"."]; //Epoch returns with a period for some reason.
[fileName deleteCharactersInRange:thePeriod];
[fileName appendString:@".jpeg"];
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
NSData *imageData = [NSData dataWithData:UIImageJPEGRepresentation(imageToUpload, 1.0)];
[imageData writeToFile:filePath atomically:YES];
[[self restClient] uploadFile:fileName toPath:currentPath withParentRev:nil fromPath:filePath];
[picker dismissModalViewControllerAnimated:YES];
}
あなたの目標は、ユーザーが入力したものに写真に添付したい意味があることであると仮定し、機能するものが見つかるまでタイトルの末尾にある数字を増やしてください
例えば
ピクニックデー.jpg
ピクニックデー 1.jpg
ピクニックデー2.jpg