Swift中UUID(通用唯一标识符)的概念、用法及作用是什么?
Swift 开发场景中的 UUID 详解
基础定义
Swift 中的UUID是 Foundation 框架内置的值类型,完全遵循 RFC 4122 标准实现,本质是一串128位的标识符,常规展示格式为8-4-4-4-12分段的十六进制字符串,比如123E4567-E89B-12D3-A456-426614174000。它的核心特性是生成时不需要依赖中心化的ID分配服务,不同设备、不同时间独立生成的UUID重复概率极低,常规业务场景下可以直接认为是全局唯一的。
核心适用场景
- 本地数据唯一标识:比如离线创建的草稿、本地缓存条目、用户自定义配置项的主键,不需要和服务端提前约定ID规则就能保证不冲突
- 跨端同步实体标识:多端同步的本地生成数据,用UUID作为唯一标识不会和其他设备生成的ID撞值
- 临时身份标识:比如单次App启动的会话追踪ID、临时弹窗/页面的唯一标记、无ID业务模型在列表渲染时的区分key
- 系统API入参要求:比如iOS本地通知的请求ID、通知中心的请求标识、App私有目录下的随机文件名、Core Data/SwiftData实体的唯一属性值
具体使用方式
生成新UUID
直接调用UUID()构造方法即可生成一个新的版本4随机UUID,通过uuidString属性可以拿到标准格式的字符串:
import Foundation // 生成全新UUID let itemID = UUID() // 获取字符串表示 let idString = itemID.uuidString // 输出示例:68753A44-4D6F-1226-9C60-0050E4C00067
解析已有UUID
如果拿到了符合格式的UUID字符串,可以用构造方法直接解析为UUID实例,格式不合法时会返回nil:
let inputStr = "68753A44-4D6F-1226-9C60-0050E4C00067" if let validUUID = UUID(uuidString: inputStr) { // 解析成功,后续可以直接用validUUID做存储、比对操作 }
常见业务用法示例
比如给本地通知生成唯一请求ID,后续可以通过这个ID精准取消对应通知:
import UserNotifications let notifyContent = UNMutableNotificationContent() notifyContent.title = "待办提醒" notifyContent.body = "你设定的1小时后待办时间到了" let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 3600, repeats: false) // 用UUID作为唯一请求标识 let request = UNNotificationRequest( identifier: UUID().uuidString, content: notifyContent, trigger: trigger ) UNUserNotificationCenter.current().add(request)
使用注意事项
- 不要将UUID视作绝对100%不会重复的标识,它的唯一性是概率性的,只是重复概率低到普通消费级业务完全不需要考虑,如果是支付订单、资金流水这类对唯一性有强要求的场景,还是建议使用服务端统一分配的规则ID
- 持久化存储时优先直接存
UUID类型,Core Data、SwiftData、SQLite(通过常规封装)都原生支持UUID类型,查询、比对效率比存字符串更高 - 默认生成的是RFC 4122 v4版本的随机UUID,和安卓、Web端的标准UUID生成规则完全对齐,跨端传递时不需要做特殊格式转换
内容的提问来源于stack exchange,提问作者x3kss
相关产品推荐
相关产品推荐

