gpt4 book ai didi

ios - 如何使用 guard 同时解包 Swift 可选类型和强制转换类型?

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:03 24 4
gpt4 key购买 nike

我有以下代码。 response.result.valueOptional(AnyObject) 类型,我想检查一下

  1. 它的类型是[[String: AnyObject]]

  2. 展开可选的

  3. 检查数组的个数

  4. 相比 if...return... 语句,我更喜欢一个线路守卫

    Alamofire.request(.GET, API.listArticle).responseJSON { response in
    print(response.result.value)

    guard let articles = response.result.value as? [[String: AnyObject]] where articles.count > 0 else {
    return
    }

    for article in articles {
    let entity = NSEntityDescription.insertNewObjectForEntityForName("Article", inManagedObjectContext: DBHelper.context()) as! Article
    entity.title = article["title"]
    entity.content = article["content"]

    }
    }

错误是article["content"]行:

Cannot subscript a value of type Dictionary<String, AnyObject> with an index of type String

我还需要检查 title 是否存在于 article 中吗?它会崩溃还是什么都不做?

最佳答案

问题是您正在使用字典,其中 value 的类型为 AnyObject 来填充 titlecontent 可能是 String 的属性(对吧?)

您不能将(在编译时)声明为 AnyObject 的内容放入 String 属性中。

只是替换这个

entity.title = article["title"]
entity.content = article["content"]

有了这个

entity.title = article["title"] as? String
entity.content = article["content"] as? String

更新

此更新将丢弃 titlecontent 值不是正确字符串的文章。

for article in articles {

if let
title = article["title"] as? String,
content = article["content"] as? String {

let entity = NSEntityDescription.insertNewObjectForEntityForName("Article", inManagedObjectContext: DBHelper.context()) as! Article

entity.title = title
entity.content = content
}
}

关于ios - 如何使用 guard 同时解包 Swift 可选类型和强制转换类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34583599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com