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

如何创建已设置underlyingErrors属性的NSError对象?

创建带有指定underlyingErrors的NSError对象

注意:underlyingErrors 属性仅在 iOS 15.0+、macOS 12.0+、tvOS 15.0+、watchOS 8.0+ 及以上系统版本可用

Swift 实现

  • 先构造需要的底层错误数组,再通过NSError初始化方法,将数组存入userInfo的NSUnderlyingErrorsKey键中,即可自动映射到underlyingErrors属性:
// 构造多个底层错误实例
let error1 = NSError(domain: "com.example.test", code: 1, userInfo: [NSLocalizedDescriptionKey: "底层错误1"])
let error2 = NSError(domain: "com.example.test", code: 2, userInfo: [NSLocalizedDescriptionKey: "底层错误2"])
let underlyingErrors = [error1, error2]

// 创建包含指定底层错误的主NSError
let testError = NSError(
    domain: "com.example.main",
    code: 100,
    userInfo: [
        NSLocalizedDescriptionKey: "主错误描述",
        NSUnderlyingErrorsKey: underlyingErrors
    ]
)

// 验证属性
print(testError.underlyingErrors ?? []) // 输出构造的底层错误数组

Objective-C 实现

  • 逻辑和Swift一致,通过NSUnderlyingErrorsKey将底层错误数组传入userInfo:
// 构造底层错误
NSError *error1 = [NSError errorWithDomain:@"com.example.test" code:1 userInfo:@{NSLocalizedDescriptionKey: @"底层错误1"}];
NSError *error2 = [NSError errorWithDomain:@"com.example.test" code:2 userInfo:@{NSLocalizedDescriptionKey: @"底层错误2"}];
NSArray *underlyingErrors = @[error1, error2];

// 创建主错误
NSError *testError = [NSError errorWithDomain:@"com.example.main" code:100 userInfo:@{
    NSLocalizedDescriptionKey: @"主错误描述",
    NSUnderlyingErrorsKey: underlyingErrors
}];

// 验证属性
NSLog(@"%@", testError.underlyingErrors); // 输出底层错误数组

兼容低版本说明

如果需要兼容低于上述的系统版本,无法直接使用underlyingErrors属性,但可以通过userInfo[NSUnderlyingErrorsKey]直接获取底层错误数组,二者本质是同一数据的不同访问方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:42:26