1
AllenChiangCN 2021-02-04 14:04:19 +08:00
进 app info,然后 clear storage
|
2
AllenChiangCN 2021-02-04 14:04:57 +08:00
@AllenChiangCN 不好意思,你好像说的是 iOS
|
3
ericgui OP @AllenChiangCN 是 iOS,不好意思没说清楚
|
4
JasonEWNL 2021-02-05 00:28:28 +08:00 1
标记为 AppStorage 的变量本地存着, run 之后就像常规覆盖安装后持续保存的用户数据一样.
方案一: 设置为 State, 小量可在打包前手动改回, 如果比较重度建议设置预处理语句. ```swift #if DEBUG @State ... #else @AppStorage ... #endif ``` 方案二: 参考 Stack Overflow 的一个个曲线方案 (针对模拟器的在评论里): https://stackoverflow.com/questions/15258777/xcode-delete-application-before-running-on-device#answer-32992734 简单解释就是把 `xcrun simctl uninstall sim-udid bundle-id` 放在 build 脚本里, 每次 build 会先删掉应用. |
6
JasonEWNL 2021-02-05 12:11:20 +08:00
@ericgui 是的. 因为不删除地在 Xcode 里 run 一次, 就像用户不删除应用就从 App Store 更新一样, 标记为 AppStorage 的变量存储在 UserDefaults 里, 如其他永久存储方案一样, 仅能通过用户操作 (包括删除在内) 才能修改或重置.
不过这么一说就想到方案三: 给标记为 AppStorage 的变量所在 View 的 body 设置 onAppear, 类似方案一地进行预处理. ```swift @AppStorage ... var body: some View { ... } .onAppear { #if DEBUG ... = DEBUG_VALUE #endif } ``` |