【问题标题】:How to access value of __nssingleobjectarrayi in the following code如何在以下代码中访问 __nssingleobjectarrayi 的值
【发布时间】:2017-03-30 08:37:55
【问题描述】:

我解析了一个 json 并得到了一个 JSON 字典。

{
data =     (
            {
        bio = "<null>";
        bookmarked = 35;
        id = 22;
        "last_seen" =             {
            date = "2017-03-30 14:00:01";
            timezone = "Asia/Kolkata";
            "timezone_type" = 3;
        };
        name = "Alex";
        username = "Alex";
    }
);}

我正在尝试访问用户名和日期。 我试过这样做

let name = userData.value(forKeyPath: "data.username")
print(username)

通过打印这个,我得到一个带有用户名的 __NSSingleObjectArrayI。

Optional(<__NSSingleObjectArrayI 0x6080000120b0>(
Alex
)
)

如何访问它并在其他地方显示?基本上从中提取“Alex”作为字符串?

【问题讨论】:

    标签: json swift xcode parsing alamofire


    【解决方案1】:

    value(forKeyPath 应用于包含字典的数组会返回一个数组——如输出所示。你需要得到数组的第一项

    let names = userData.value(forKeyPath: "data.username")
    if !names.isEmpty { print(names[0]) }
    

    不过通常的取名方式是

    if let data = userDatavalue["data") as? [[String:Any]], !data.isEmpty,
       let username = data[0]["username"] as? String {
          print(username)
    }
    

    【讨论】:

    • 如果我想从字典中访问多个值,但它们不是都来自相同的数据类型怎么办?假设它们可以是 Double 或 String。
    • 你必须有条件地分别向下转换(as? Doubleas? Int)所有类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多