我们在通过struct使用Codable的时候,是有默认实现的。但是如果class,就会麻烦一些。需要创建init函数。如果还要使用@Observable/ObservableObject,那就会更麻烦了。因为@Observable/ObservableObject会自动生成带_(下划线)的内部属性。这在解码的时候会报错。
此时就只能完全手写Codable才可以了。
我们在通过struct使用Codable的时候,是有默认实现的。但是如果class,就会麻烦一些。需要创建init函数。如果还要使用@Observable/ObservableObject,那就会更麻烦了。因为@Observable/ObservableObject会自动生成带_(下划线)的内部属性。这在解码的时候会报错。
此时就只能完全手写Codable才可以了。
macOS中,默认List选中之后的背景是深蓝色。这会导致我的按钮变得不明显,我希望修改这个背景色。
询问AI,AI给我的反馈是通过background修改。但是通过background修改的背景色,会比系统自带的小一圈,十分丑陋。我再次询问AI,如果要修改系统的默认选中背景,要如何做。AI回答说,要修改那个很复杂。然后给了我一个错误的解法。
我只要换个AI来问。第二个AI给出的也是通过background修改。不过它在说思路的时候,应该是通过listRowBackground修改。于是我自己尝试用listRowBackground来修改。这次成功了。
.listRowBackground(selectedLanguage == locale ? Color.gray.opacity(0.15) : Color.clear)
当使用listRowBackground,List的选中就不要绑定selectedLanguage了。因为那样会导致.listRowBackground和高亮色被同时使用。
高亮色就是List选中的背景色的正式说法。
因为上面说的原因,我们需要手动指令selectedLanguage,可以通过点击或者onHover。看你的界面的需要。
之前我的苹果表s5无法和Xcode 15配对。用了很多办法也没解决。后来我发现,这个问题在Xcode 15上几乎是普遍存在的。于是死心了。等苹果修。结果等来的却是WWDC2024的watchOS 11不再支持我的s5的消息。索性,趁着618的促销,把s5卖掉,换成s9。
出乎我意料的,s9与Xcode 15的配对也不是一帆风顺。最初遇到的难题就是,手表没法打开开发者模式。我使用方式是:
我这么做完之后,我的s9并没有成功显示开发者选项。这时,我看到了手机提示手表系统可以升级,点开一看,原来手表的系统是watchOS 10.4,而最新的是watchOS 10.5。于是将s9连上充电器,开始升级系统。
升级系统完成后,直接就发现了开发者选项。可见,第一步应该是升级系统到最新的10.5,然后是上面的那几步。
结果和Xcode 15的配置还是不成功。于是我打开Xcode 16 beta配对。结果提示了这个错误。
Transport error
Domain: com.apple.CoreDevice.ControlChannelConnectionError
Code: 0
User Info: {
DVTErrorCreationDateKey = "2024-06-16 08:32:19 +0000";
"com.apple.dt.DVTCoreDevice.operationName" = connect;
}
--
Control channel connection timed out while in state preparing
Domain: com.apple.dt.RemotePairingError
Code: 4
--
System Information
macOS Version 14.5 (Build 23F79)
Xcode 16.0 (23037.4) (Build 16A5171c)
Timestamp: 2024-06-16T16:32:19+08:00
我怀疑和VPN的设置有关。我使用的是Clash Pro。于是重启到macOS 15 beta系统。那个系统中Clash Pro没有设置为开机启动。果然,进入到macOS 15 beta之后,和Xcode 16 beta的配对成功了。
然后我又重启回macOS 14.5,这回提示为另外一个错误了。
Previous preparation error: A networking error occurred.. Control channel connection was invalidated while creating tunnel connection
我将Clash Pro的策略从“规则”,修改为“全局”。然后重开Xcode 15,这次可以成功配对了。
最后,我创建了一个手表应用测试了一下,可以成功调试了。