如何将NSUUID转换为NSData

问题描述 投票:11回答:3

我需要从NSData获得vendorIdentifier而不转换为NSString,清除字节。如何用NSUUID转换getUUIDBytes:NSData

objective-c nsdata uuid nsuuid
3个回答
20
投票
NSUUID *vendorIdentifier = [[UIDevice currentDevice] identifierForVendor];
uuid_t uuid;
[vendorIdentifier getUUIDBytes:uuid];

NSData *vendorData = [NSData dataWithBytes:uuid length:16];

7
投票

用这个来获得vendorIdentifier作为Data(Swift 4):

var uuidBytes = UIDevice.current.identifierForVendor!.uuid
let uuidData = NSData(bytes: &uuidBytes, length: 16) as Data

请记住,正如UIDevice.current.identifierForVendor所说,要防止documentation为零。


原始答案(Swift 2版):

var uuidBytes: [UInt8] = [UInt8](count: 16, repeatedValue: 0)
UIDevice.currentDevice().identifierForVendor!.getUUIDBytes(&uuidBytes)
let uuidData = NSData(bytes: &uuidBytes, length: 16)

1
投票

Swift 3版本:

let vendorId = UIDevice.current.identifierForVendor!
let uuidBytes = Mirror(reflecting: vendorId.uuid).children.map { $0.1 as! UInt8 }
let data = Data(bytes: uuidBytes)
© www.soinside.com 2019 - 2024. All rights reserved.