Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 类型[SubscriptType]不符合协议StringLiteralConverable错误_Swift - Fatal编程技术网

Swift 类型[SubscriptType]不符合协议StringLiteralConverable错误

Swift 类型[SubscriptType]不符合协议StringLiteralConverable错误,swift,Swift,类型[SubscriptType]不符合协议StringLiteralConverable // JsonRequest.swift class JsonRequest { var title: String? var postBody: String? var coverImage: String? init(json: NSDictionary){ self.title = json["title"] as? String self.postBody = json["bo

类型
[SubscriptType]
不符合协议
StringLiteralConverable

// JsonRequest.swift

class JsonRequest {
var title: String?
var postBody: String?
var coverImage: String?

init(json: NSDictionary){
    self.title = json["title"] as? String
    self.postBody = json["body"] as? String
    self.coverImage = json["img_url"] as? String
}
}

// ViewController.swift file

var posts = [JsonRequest]()

let feedUrl = NSURL(string: "http://example.com/json")
    // 2
    if let JSONData = NSData(contentsOfURL: feedUrl!) {
        // 3
        var jsonResult = NSJSONSerialization.JSONObjectWithData(JSONData, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

        var myJSON = JSON(jsonResult)
        let arrayLength = myJSON["dump"].array?.count

        if arrayLength != 0 {
            for postIndex in 0...arrayLength! - 1 {
                var postArray = myJSON["dump"][postIndex]["title"] as? [NSDictionary]
                for item in postArray {
                    posts.append(JsonRequest(json: item))
               }
            }
        }
    }

我想从我的JSON
[“dump”][0,1,2][“title”]
附加到
postArray数组
,将所有这些标题保存在this数组中,但下面是此错误的原因。如何修复它并将我的标题保存在此数组中?

您不能将
postArray
转换为
[NSDictionary]
,因为它不是
NSDictionary
。 但它是字符串,下面是示例代码

var posts = [String]()

    let feedUrl = NSURL(string: "http://example.com/en/feed")
    // 2
    if let JSONData = NSData(contentsOfURL: feedUrl!) {
        // 3
        var jsonResult = NSJSONSerialization.JSONObjectWithData(JSONData, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

        var myJSON = JSON(data:JSONData)
        let arrayLength = myJSON["dump"].array?.count

        if arrayLength != 0 {
            for postIndex in 0...arrayLength! - 1 {
                var post = myJSON["dump"][postIndex]["title"].stringValue
                posts.append(post)
                println(posts)
            }
        }
    }
编辑

按以下方式更新代码:

JsonRequest.swift

class JsonRequest {
var title: String?
var postBody: String?
var coverImage: String?

init(json: JSON){
    self.title = json["title"].stringValue
    self.postBody = json["body"].stringValue
    self.coverImage = json["img_url"].stringValue
    }
} 
var posts = [JsonRequest]()

    let feedUrl = NSURL(string: "http://example.com/en/feed")
    // 2
    if let JSONData = NSData(contentsOfURL: feedUrl!) {
        // 3
        var jsonResult = NSJSONSerialization.JSONObjectWithData(JSONData, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

        var myJSON = JSON(data:JSONData)
        let arrayLength = myJSON["dump"].array?.count
        var dict = myJSON["dump"]

        if arrayLength != 0 {
            for postIndex in 0...arrayLength! - 1 {
                var tempDict = dict[postIndex]
                posts.append(JsonRequest(json: tempDict))
            }
        }
    }
ViewController.swift

class JsonRequest {
var title: String?
var postBody: String?
var coverImage: String?

init(json: JSON){
    self.title = json["title"].stringValue
    self.postBody = json["body"].stringValue
    self.coverImage = json["img_url"].stringValue
    }
} 
var posts = [JsonRequest]()

    let feedUrl = NSURL(string: "http://example.com/en/feed")
    // 2
    if let JSONData = NSData(contentsOfURL: feedUrl!) {
        // 3
        var jsonResult = NSJSONSerialization.JSONObjectWithData(JSONData, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

        var myJSON = JSON(data:JSONData)
        let arrayLength = myJSON["dump"].array?.count
        var dict = myJSON["dump"]

        if arrayLength != 0 {
            for postIndex in 0...arrayLength! - 1 {
                var tempDict = dict[postIndex]
                posts.append(JsonRequest(json: tempDict))
            }
        }
    }

希望有帮助。

在这一行
posts.append(post)
它打印下一个错误:
'NSString'不是'JsonRequest'的子类型。
这只是一个示例,我使用字符串数组,但您可以根据需要修改它。我也添加了我的
JsonRequest
文件。也许对你有帮助