【问题标题】:Type 'String' does not conform to protocol 'NSCopying' - Array swift json Error类型“字符串”不符合协议“NSCopying” - 数组 swift json 错误
【发布时间】:2015-05-28 14:51:08
【问题描述】:

提前抱歉我的英语不好。 我的 Swiftcode 有问题,我是 Swift 新手,所以也许你可以帮助我 :)

这是我的代码。

    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
        data, response, error in

        if(error != nil)
        {
            println("error\(error)")
            return;
        }

        var err: NSError?
        var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &err) as? NSDictionary

        if let parseJSON = json
        {
            var resultValue:String = parseJSON["message"] as String!;
            println("result: \(resultValue)")
            self.LabelFalscheEingabe.text = "\(resultValue)";

            if(resultValue == "Success")
            {
             var Projects:Array = parseJSON["projects"] as Array!; // here is the Error
            }
        }
        task.resume()
    }

'projects' 是服务器上 Array 类型的变量,所以我想从服务器获取它作为 Array,但如果我尝试这样做,我会收到以下错误。

错误:“类型 'String' 不符合协议 'NSCopying'”。

提前致谢:)

【问题讨论】:

  • 你的英文对我来说很好,不用道歉。

标签: arrays json string swift


【解决方案1】:

你的Projects 数组不能这样声明,Swift 必须知道数组中对象的类型

如果您不知道类型,则将其设为AnyObject 的数组:

if let Projects = parseJSON["projects"] as? [AnyObject] {
    // do something with Projects
}

如果你知道它是一个字符串数组,例如:

if let Projects = parseJSON["projects"] as? [String] {
    // do something with Projects
}

整数数组:

if let Projects = parseJSON["projects"] as? [Int] {
    // do something with Projects
}

由 JSON 制成的字典数组:

if let Projects = parseJSON["projects"] as? [[String:AnyObject]] {
    // do something with Projects
}

等等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多