Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generating UUIDs with Swift

Tags:

uuid

swift

I'm trying to generate a UUID using Swift. The official documentation is confusing me a little bit.

The documentation says

init?(uuidString: String) Create a UUID from a string such as “E621E1F8-C36C-495A-93FC-0C247A3E6E5F”.

Does this mean that the string I need to create the UUID from has to be in that format?

For a project I'm doing, I have a string and I want to generate a UUID specifically for that string.

Here's what I tried:

import Foundation

var str = UUID(uuidString: "Hello World")
print(str.uuidString)

This gives me the error,

value of optional type 'UUID?' not unwrapped; did you mean to use '!' or '?'?

I'm still very new to Swift and all this. I don't know what to do in this case.

Basically, I need to generate a UUID SPECIFICALLY for a string (such as "Hello world"), and then I want to use the UUID to return the original string.

like image 651
Human Cyborg Relations Avatar asked Jul 11 '17 02:07

Human Cyborg Relations


People also ask

How are UUIDs generated?

The UUID is generated by concatenating the 48 bit MAC address and the 60 bit timestamp, which sums up to 108 bits. The remaining 20 bits consist of 5 to 7 bits which are the variant (uses 4 bits) and the version (uses 1 to 3 bits) of the UUID and the remaining 13 to 14 bits are the clock sequence.

How many UUIDs can be generated?

32 hexadecimals x log2(16) bits/hexadecimal = 128 bits in a UUID. In the version 4, variant 1 type of UUID, 6 bits are fixed and the remaining 122 bits are randomly generated, for a total of 2¹²² possible UUIDs.

What is UUID () Swiftui?

A universally unique value to identify types, interfaces, and other items.

How is UUID v4 generated?

Version 4. This version of UUID is generated randomly. Although the random UUID uses random bytes, four bits are used to indicate version 4, while two to three bits are used to indicate the variant. These can be created using a random or pseudo-random number generator.


1 Answers

UUID().uuidString is used to generate UUIDs. You need to import Foundation to use it.

This is a UUID: E621E1F8-C36C-495A-93FC-0C247A3E6E5F

They are generated from "nothing", they are unique. If you wanted to generate an ID given some string, and generate that same ID at any time using that string, then an UUID will not work for you.

Is it possible you are looking for Base64 encoding?

With Base64, for example, you can encode Hello World as SGVsbG8gV29ybGQ=, and then decode SGVsbG8gV29ybGQ= as Hello World.

like image 192
Andrés Pizá Bückmann Avatar answered Oct 14 '22 22:10

Andrés Pizá Bückmann