探究UIPasteboard中setItems(_:options:)方法的options参数
UIPasteboard setItems(_:options:) 选项参数详解
有效选项列表
setItems(_:options:)的options参数接收[UIPasteboard.OptionsKey: Any]类型的字典,可用的键值对如下:
localOnly:布尔值,控制剪贴项是否仅本地可用expirationDate:Date类型,设置剪贴项的自动过期时间preferredPasteboard:UIPasteboard实例,指定要操作的目标剪贴板secure:布尔值,标记剪贴项为安全敏感内容(iOS 14+支持)
各选项的行为影响
localOnly
设置为true时,剪贴项仅存储在当前设备,不会通过iCloud剪贴板同步到其他关联设备,适合处理不想跨设备泄露的内容。
expirationDate
自定义剪贴项的存活时长,到期后系统会自动清理这些内容,避免敏感信息长期留存剪贴板。优先级高于系统默认的剪贴板清理规则。
preferredPasteboard
默认操作系统通用剪贴板(UIPasteboard.general),通过这个选项可以指定应用专属剪贴板,实现应用内独立的剪贴板管理,不会和系统通用剪贴板的内容互相干扰。
secure
标记为安全的剪贴项会受到系统额外限制:锁屏状态下不会显示内容预览,其他应用请求访问时可能需要权限验证,适合存储密码、验证码等敏感数据。
代码示例
示例1:本地仅存+定时过期的剪贴项
let generalPasteboard = UIPasteboard.general // 构造多类型剪贴项(文本+URL) let items: [[String: Any]] = [ ["public.plain-text": "仅本地可见的文本"], ["public.url": URL(string: "https://example.com")!] ] // 设置10分钟后过期 let expireTime = Date().addingTimeInterval(600) let options: [UIPasteboard.OptionsKey: Any] = [ .localOnly: true, .expirationDate: expireTime ] generalPasteboard.setItems(items, options: options)
示例2:安全的应用专属剪贴项
// 创建应用专属剪贴板 guard let customPasteboard = UIPasteboard(name: "com.myapp.secureClip", create: true) else { return } let secureItems: [[String: Any]] = [ ["public.plain-text": "用户临时验证码:654321"] ] let options: [UIPasteboard.OptionsKey: Any] = [ .secure: true, .preferredPasteboard: customPasteboard ] customPasteboard.setItems(secureItems, options: options)
文档参考要点
- 所有选项的定义和版本兼容性,可查看苹果官方文档中
UIPasteboard类的OptionsKey枚举部分 - 注意:
secure选项仅支持iOS 14及以上版本;localOnly从iOS 10开始支持;expirationDate设置的时间不能早于当前时间,否则会被忽略
内容的提问来源于stack exchange,提问作者Nube
相关产品推荐
相关产品推荐

