You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RealmSwift官方示例代码运行报错:本地库尝试连接远程服务器

解决本地Realm数据库触发远程连接请求的错误问题

你按照官方快速入门流程,用Storyboard创建iOS示例App,通过Cocoapods集成RealmSwift,替换ViewController代码为如下内容:

import UIKit
import RealmSwift

class Todo: Object {
   @Persisted(primaryKey: true) var _id: ObjectId
   @Persisted var name: String = ""
   @Persisted var status: String = ""
   @Persisted var ownerId: String
   convenience init(name: String, ownerId: String) {
       self.init()
       self.name = name
       self.ownerId = ownerId
   }
}

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let realm = try! Realm()
        let todo = Todo(name: "Do laundry", ownerId: "user.id")
        try! realm.write {
            realm.add(todo)
        }
    }
}

运行后控制台出现如下错误日志:

2023-03-13 11:09:14.269102+0300 TestRealm[56847:824997] Task <E9B2CB4F-27E1-44B6-8F20-9422342C1FDB>.<2> HTTP load failed, 1708/0 bytes (error code: -1017 [4:-1])
2023-03-13 11:09:14.272633+0300 TestRealm[56847:824997] Task <E9B2CB4F-27E1-44B6-8F20-9422342C1FDB>.<2> finished with error [-1017] Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" UserInfo={_kCFStreamErrorCodeKey=-1, NSUnderlyingError=0x600001979560 {Error Domain=kCFErrorDomainCFNetwork Code=-1017 "(null)" UserInfo={_kCFStreamErrorCodeKey=-1, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <E9B2CB4F-27E1-44B6-8F20-9422342C1FDB>.<2>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <E9B2CB4F-27E1-44B6-8F20-9422342C1FDB>.<2>"
), NSLocalizedDescription=cannot parse response, NSErrorFailingURLStringKey=https://data.mongodb-api.com/app/realmsdkmetrics-zmhtm/endpoint/metric_webhook/metric?data=eyJldmVudCI6IlJ1biIsInByb3BlcnRpZXMiOnsiZGlzdGluY3RfaWQiOiIwZDUxNDUzNDEyYzIxNjdhMGQwZjhiNzJlNzMwNmU0OWZiNTMyODg2OTA2MzE5NzViM2ExZjA4MzAwYWVkZWNlIiwiVGFyZ2V0IE9TIFZlcnNpb24iOiJWZXJzaW9uIDE2LjIgKEJ1aWxkIDIwQzUyKSIsIkNsYW5nIFZlcnNpb24iOiIxNC4wLjAgKGNsYW5nLTE0MDAuMC4yOS4yMDIpIiwiSG9zdCBPUyBWZXJzaW9uIjoiMjEuNi4wIiwiTGFuZ3VhZ2UiOiJzd2lmdCIsInRva2VuIjoiY2UwZmFjMTk1MDhmNmM4ZjIwMDY2ZDM0NWQzNjBmZDAiLCJBbm9ueW1pemVkIEJ1bmRsZSBJRCI6IjFiODhjMDMxYWNiYzQ2MzFkOGJjZTI1NjhiODhhMjBjZTA3N2U2NmQzYjFkNzU5N2JlMTA3OWFiYTUyMWUyMGYiLCJUYXJnZXQgT1MgVHlwZSI6ImlvcyIsIkJpbmRpbmciOiJjb2NvYSIsIlJlYWxtIFZlcnNpb24iOiIxMC4zNy4wIiwiQ2xhbmcgTWFqb3IgVmVyc2lvbiI6MTQsIkluc3RhbGxhdGlvbiBNZXRob2QiOiJDb2NvYVBvZHMiLCJUYXJnZXQgT1MgTWluaW11bSBWZXJzaW9uIjoiMTYuMiIsIkFub255bWl6ZWQgTUFDIEFkZHJlc3MiOiIwZDUxNDUzNDEyYzIxNjdhMGQwZjhiNzJlNzMwNmU0OWZiNTMyODg2OTA2MzE5NzViM2ExZjA4MzAwYWVkZWNlIiwiSG9zdCBPUyBUeXBlIjoib3N4In19, NSErrorFailingURLKey=https://data.mongodb-api.com/app/realmsdkmetrics-zmhtm/endpoint/metric_webhook/metric?data=eyJldmVudCI6IlJ1biIsInByb3BlcnRpZXMiOnsiZGlzdGluY3RfaWQiOiIwZDUxNDUzNDEyYzIxNjdhMGQwZjhiNzJlNzMwNmU0OWZiNTMyODg2OTA2MzE5NzViM2ExZjA4MzAwYWVkZWNlIiwiVGFyZ2V0IE9TIFZlcnNpb24iOiJWZXJzaW9uIDE2LjIgKEJ1aWxkIDIwQzUyKSIsIkNsYW5nIFZlcnNpb24iOiIxNC4wLjAgKGNsYW5nLTE0MDAuMC4yOS4yMDIpIiwiSG9zdCBPUyBWZXJzaW9uIjoiMjEuNi4wIiwiTGFuZ3VhZ2UiOiJzd2lmdCIsInRva2VuIjoiY2UwZmFjMTk1MDhmNmM4ZjIwMDY2ZDM0NWQzNjBmZDAiLCJBbm9ueW1pemVkIEJ1bmRsZSBJRCI6IjFiODhjMDMxYWNiYzQ2MzFkOGJjZTI1NjhiODhhMjBjZTA3N2U2NmQzYjFkNzU5N2JlMTA3OWFiYTUyMWUyMGYiLCJUYXJnZXQgT1MgVHlwZSI6ImlvcyIsIkJpbmRpbmciOiJjb2NvYSIsIlJlYWxtIFZlcnNpb24iOiIxMC4zNy4wIiwiQ2xhbmcgTWFqb3IgVmVyc2lvbiI6MTQsIkluc3RhbGxhdGlvbiBNZXRob2QiOiJDb2NvYVBvZHMiLCJUYXJnZXQgT1MgTWluaW11bSBWZXJzaW9uIjoiMTYuMiIsIkFub255bWl6ZWQgTUFDIEFkZHJlc3MiOiIwZDUxNDUzNDEyYzIxNjdhMGQwZjhiNzJlNzMwNmU0OWZiNTMyODg2OTA2MzE5NzViM2ExZjA4MzAwYWVkZWNlIiwiSG9zdCBPUyBUeXBlIjoib3N4In19, _kCFStreamErrorDomainKey=4}

问题原因

这个错误并非本地Realm功能异常导致,而是Realm SDK默认会发送匿名使用统计数据到MongoDB的远程服务器,即使你仅使用本地数据库。当网络环境或服务器响应异常时,就会触发这个解析错误。

解决方案

有两种方式可以禁用这个统计上报行为:

1. 通过Realm配置禁用

在App启动阶段(比如AppDelegate或SceneDelegate,SwiftUI则在App结构体的初始化方法中),修改Realm的默认配置,禁用分析统计:

UIKit项目(AppDelegate示例):

import UIKit
import RealmSwift

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // 禁用Realm匿名统计上报
        let config = Realm.Configuration(
            analyticsConfiguration: .disabled
        )
        Realm.Configuration.defaultConfiguration = config
        
        return true
    }
    
    // 其他生命周期方法...
}

SwiftUI项目示例:

import SwiftUI
import RealmSwift

@main
struct TestRealmApp: App {
    init() {
        let config = Realm.Configuration(
            analyticsConfiguration: .disabled
        )
        Realm.Configuration.defaultConfiguration = config
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

2. 通过编译标记全局禁用

在Xcode中打开项目的Build Settings,找到Other Swift Flags,添加编译标记:

-D REALM_DISABLE_ANALYTICS

这个标记会全局禁用Realm的统计功能,无需修改代码配置。

两种方式任选其一,都能阻止Realm发起远程统计请求,从而解决该错误。

内容的提问来源于stack exchange,提问作者Gargo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:47:17