macOS Swift应用连接Realm Object Server报Network connection was lost错误
问题诊断与解决方案
问题根源
没错,你开启App Sandbox功能就是导致这个错误的直接原因!macOS的沙箱机制默认会严格限制应用的网络访问权限,你的日志里反复出现的Operation not permitted已经明确指向了权限被阻止的问题——之前应用没开沙箱时可以自由访问网络,开启后系统直接拦截了Realm同步所需的网络请求,才会出现“Network connection was lost”的错误。
解决步骤
要在开启沙箱的前提下正常连接Realm Object Server,只需在Xcode中配置正确的沙箱网络权限:
- 打开你的Xcode项目,选中项目根目录,切换到Signing & Capabilities标签页
- 找到App Sandbox模块,展开其中的Network选项组
- 根据你的连接场景勾选对应权限:
- 若连接互联网上的服务器(比如DigitalOcean部署的实例):勾选Outgoing Connections (Client)
- 若同时需要连接本地Realm服务器:确保Outgoing Connections (Client)已勾选;如果涉及本地网络发现(如mDNS),还需要在Hardened Runtime的Network部分勾选Allow Network Connections
- 重新编译运行应用,此时Realm的登录请求应该就能正常发送了
额外说明
你的登录代码本身没有问题——之前能正常运行是因为未开启沙箱,应用不受网络权限限制。现在为了上传App Store必须开启沙箱,就必须明确向系统声明应用需要的网络权限,否则所有网络请求都会被系统拦截,进而出现连接丢失的错误。
内容的提问来源于stack exchange,提问作者Hadi
相关产品推荐
相关产品推荐

