删除Xcode预览视图中的UserDefaults
删除Xcode预览视图中的UserDefaults

删除Xcode预览视图中的UserDefaults

在 Xcode 预览 中,如果代码中使用了 UserDefaults,并且需要清除其中的内容,可以通过以下几种方式来实现:

1、手动清除指定的键值

在 Swift 代码中,可以通过调用 UserDefaults 的 removeObject(forKey:) 方法清除指定的键:

UserDefaults.standard.removeObject(forKey: "yourKey")

如果想清除多个键,可以遍历删除:

let keysToRemove = ["key1", "key2", "key3"]
for key in keysToRemove {
    UserDefaults.standard.removeObject(forKey: key)
}

将这段代码放在预览的初始化代码中,确保预览时清除这些值。

2、清除所有 UserDefaults 数据

如果想清除 所有的 UserDefaults 数据,可以使用以下代码:

if let bundleID = Bundle.main.bundleIdentifier {
    UserDefaults.standard.removePersistentDomain(forName: bundleID)
}

将这段代码放入预览的上下文中,例如:

#Preview {
    // 清除所有 UserDefaults 数据
    if let bundleID = Bundle.main.bundleIdentifier {
        UserDefaults.standard.removePersistentDomain(forName: bundleID)
    }
    
    return ContentView()
}

3、仅在预览中清除数据

可以利用 #if DEBUG 或在预览代码中执行清理逻辑,仅针对预览时清空 UserDefaults:

#if DEBUG
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
    if let bundleID = Bundle.main.bundleIdentifier {
        UserDefaults.standard.removePersistentDomain(forName: bundleID)
    }
}
#endif

这样清理逻辑只会在预览环境中执行,而不会影响实际运行的应用。

4、使用一个单独的 UserDefaults 组

在预览中,可以使用一个单独的 UserDefaults 实例来避免干扰实际运行时的值:

@AppStorage("yourKey", store: UserDefaults(suiteName: "PreviewUserDefaults")) var yourValue: String = ""

在这种情况下,即使需要清除,也只需针对这个预览专用的 UserDefaults 实例进行操作。

if let userDefaults = UserDefaults(suiteName: "PreviewUserDefaults") {
    userDefaults.removePersistentDomain(forName: "PreviewUserDefaults")
    userDefaults.synchronize() // 确保立即生效
}

5、重启预览清除缓存

在某些情况下,Xcode 预览可能会缓存 UserDefaults 的值。可以通过以下方式清除:

1、重启预览

在 Xcode 中,点击左侧预览工具栏的“刷新按钮” (Cmd + Option + P)。

2、清空 DerivedData

如果问题依然存在,可以尝试清除 DerivedData 文件夹:

打开 Xcode 菜单:Xcode -> Settings -> Locations。

找到 DerivedData 路径,点击路径右侧的箭头,进入文件夹后删除内容。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注