You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:24:22