NSInvalidArgumentException:预期的字典,但实际的 _SwiftDeferredNSDictionary

问题描述 投票:0回答:1

我正在开发具有本机依赖项的 ReactNative 应用程序。特别是我正在尝试链接专有库的 iOS xcframework。我可以构建一个应用程序并初始化 SDK,但过了一会儿,应用程序崩溃了,因为 SDK 尝试发送分析但失败了。

错误信息:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unacceptable type of value for attribute: property = "data"; desired type = Dictionary; given type = _TtGCs26_SwiftDeferredNSDictionarySSSS_$; value = {
    "app_type" = MEP;
    "application_bundle_id" = "xxx";
    "application_installer_id" = "com.apple.dt.Xcode";
    "application_name" = xxx;
    "application_version" = "999.999.999";
    "client_id" = "xxx";
    country = xxx;
    "device_platform" = "iPhone16,1|iOS|17.2";
    "external_app_id" = "xxx";
    "mep_analytics_sdk_version" = "1.1.1";
}.'

回溯顶部:

Last Exception Backtrace:
0   CoreFoundation                         0x110ee6751 __exceptionPreprocess + 226
1   libobjc.A.dylib                        0x116290904 objc_exception_throw + 48
2   CoreData                               0x10f367a7c _PFManagedObject_coerceValueForKeyWithDescription + 2175
3   CoreData                               0x10f36f51b _sharedIMPL_setvfk_core + 177
4   CoreData                               0x10f3737e3 _sharedIMPL_copying_setvfk_core + 54
5   XxxAnalytics                           0x1137d94f5 specialized Client.__allocating_init(entity:insertInto:id:data:) + 229
6   XxxAnalytics                           0x1137e5a13 closure #1 in AnalyticsStorageManager.add(_:) + 355
7   XxxAnalytics                           0x1137daedc thunk for @callee_guaranteed () -> () + 12
8   XxxAnalytics                           0x1137daefe thunk for @escaping @callee_guaranteed () -> () + 14
9   CoreData 

其中 XxxAnalytics 是我链接的专有库。

调查: 当我将库链接到新的 ReactNative 应用程序(使用

npx [email protected] init TestProj
创建)时,一切正常。但是当我将它与生产应用程序链接时它崩溃了。看起来问题出在构建设置中,但我不知道具体在哪里。

生产应用程序不使用 ReactNative 自动链接。

Swift 源 中,我发现

SwiftDeferredNSDictionary
是 Swift-ObjC 桥接实现。所以我可以假设在某些情况下字典是在 Swift 中形成的并且一切正常,但在其他情况下它是在 ObjC 中形成的并且它破坏了它。

问题:哪些构建设置可能会导致此类错误?

ios swift objective-c react-native bridging
1个回答
0
投票

此问题是由 ReactNative navigation lib 引起的。该库包含一个

Dictionary
接口,它会与 Swift
Dictionary
产生名称冲突。重命名此接口可以解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.