swift如何使用后卫同时展开可选和铸造类型

时间:2016-01-04 01:26:50

标签: ios swift

我有以下代码。 response.result.value的类型为Optional(AnyObject),我想查看

  1. 类型为[[String: AnyObject]]
  2. 打开可选的
  3. 检查数组的计数
  4. 如果......返回...声明

    ,我更喜欢一个线卫
    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"]
    
        }
    }
    
  5. 错误为article["content"]行,

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

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

1 个答案:

答案 0 :(得分:4)

问题是您使用的是value类型为AnyObject的词典,以填充可能title的{​​{1}}和content属性(右?)

你不能把(在编译时)声明String的东西放到AnyObject属性中。

只需替换此

String

用这个

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

更新

此更新内容将丢弃entity.title = article["title"] as? String entity.content = article["content"] as? String title值不正确的文章。

content