반응형
Objective-C
Random String
UUID
UUID
NSString *uuid = [[NSUUID UUID] UUIDString];
NSLog(@"%@", uuid);
// 82B06C97-5CF5-455F-A21D-9FF1937A462E
NSProcessInfo
NSString *random1 = [[NSProcessInfo processInfo] globallyUniqueString];
NSLog(@"%@", random1);
// 2470F98E-1D28-4764-ADAF-283F8496705F-52948-0002A35E73AC9180
다른 방법
-(NSString*)generateRandomString:(int)num {
NSMutableString* string = [NSMutableString stringWithCapacity:num];
for (int i = 0; i < num; i++) {
[string appendFormat:@"%C", (unichar)('a' + arc4random_uniform(26))];
}
return string;
}
// 사용
NSString *random2 = [self generateRandomString:10];
NSLog(@"%@", random2);
// mbdioaqqxj
지정된 길이의 랜덤한 영문 소문자가 나옵니다.
날짜 포함 생성방법
생성된 문자열이 정렬이 되려면 날짜를 추가하는 방법으로 생성해봤습니다.
-(NSString*)generateIdByDate{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyMMddHHmmssSSS"];
NSDate *currentDate = [NSDate date];
NSString *dateString = [formatter stringFromDate:currentDate];
NSString *rand = [[[NSUUID UUID] UUIDString] componentsSeparatedByString: @"-"][0];
return [NSString stringWithFormat:@"%@%@", dateString, rand];
}
하지만, milliseconds 까지 같은 경우가 나올 수 있습니다.
중복은 나오지않겠지만, 순서가 바뀔수도 있겠네요.
순서대로 정렬이 필요하다면,
전역변수하나로 시퀀스한 변수를 만들어서 정렬이 되도록 해보겠습니다.
NSInteger idSeq = 0; // 전역변수로 추가
-(NSString*)generateIdByDate{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyMMddHHmmssSSS"];
NSDate *currentDate = [NSDate date];
NSString *dateString = [formatter stringFromDate:currentDate];
NSString *rand = [[[NSUUID UUID] UUIDString] componentsSeparatedByString: @"-"][0];
idSeq = idSeq >= 9 ? 0 : idSeq+1;
return [NSString stringWithFormat:@"%@%li%@", dateString, idSeq, rand];
}
정렬이 잘 되겠네요. 만약에 10개로 부족하다면, 한자리 더 늘려서 1부터 99까지 하시고, 1의자리는 01, 02.. 로 앞에 0을 붙혀서 사용하면 될거같습니다.
728x90
반응형
'IOS (Swift, Objective-c)' 카테고리의 다른 글
[IOS] [Objective-C] Date Formatting, 날짜포멧 (0) | 2022.02.08 |
---|---|
[IOS] [Objective-C] 10진수를 16진수 문자열로 바꾸기 (0) | 2022.02.06 |
[IOS] Objective-C Realm 사용 RLMArray 써보기 (0) | 2022.02.06 |
[Objective-C] 기초부터 앱개발까지 (별도 클래스, 함수 파일만들기) (0) | 2022.02.05 |
[IOS] Objective-C 에서 Realm 사용하기 (0) | 2022.02.05 |
댓글