ios - 类型 'customDataObject' 不符合协议(protocol) 'Sequence'

标签 ios arrays swift

我想要做的是检索 json 数据(采用数组格式)并检查我的本地数组是否已包含该数据,如果它确实移动到 JSON 数据中的下一个值,直到它们是数组不包含的值,然后将其附加到数组中。数组中的数据必须按顺序排列。我现在尝试执行此操作,但出现错误:

Type 'ResultsGenrePosters' does not conform to protocol 'Sequence'

这就是它的样子:

public struct ResultsGenrePosters: Decodable {

  public let results :  [GenrePosters]?

  public init?(json: JSON) {
    results = "results" <~~ json
  }
}


public struct GenrePosters: Decodable {

  public let poster : String

  public init? (json: JSON) {

    guard let poster: String = "poster_path" <~~ json
    else {return nil}
  self.poster = poster
  }

  static func updateGenrePoster(genreID: NSNumber, urlExtension: String, completionHandler:@escaping (_ details: [String]) -> Void){

    var posterArray: [String] = []

    let nm = NetworkManager.sharedManager

    nm.getJSONData(type:"genre/\(genreID)", urlExtension: urlExtension, completion: {
      data in

      if let jsonDictionary = nm.parseJSONData(data)
      {
        guard let genrePosters = ResultsGenrePosters(json: jsonDictionary)

          else {
            print("Error initializing object")
            return
        }
        guard let posterString = genrePosters.results?[0].poster

          else {
            print("No such item")
            return
        }

        for posterString in genrePosters {

          if posterArray.contains(posterString){continue
          } else { posterArray.append(posterString) } //This is where the error happens

        }
      }
      completionHandler(posterArray)
    })
  }

}

最佳答案

Alt + 单击“genrePosters”,它告诉您什么?它应该显示其 ResultsGenrePosters,因为这就是错误所说的内容。现在看posterArray的类型;它是一个字符串数组,而不是 Array ResultsGenrePosters。我认为您的意思是为在genrePosters中的海报编写,并且对类型感到困惑,因为您在为在genrePosters中编写了posterString

也许你想使用map将genrePosters转换成[String]?

这会将海报数组(如果存在)转换为仅包含海报名称的数组。如果它不存在,您将得到一个空数组。仅当海报是字符串时这才有效。如果是字符串?你应该使用 flatMap 来代替。

let posterNames = genrePosters.results?.map { $0.poster } ?? [String]()

关于ios - 类型 'customDataObject' 不符合协议(protocol) 'Sequence',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030812/

相关文章:

python - 根据单个单元格的条件从 numpy 数组中删除列

arrays - 有没有一种简单的方法可以在 Fsharp 中将 byte [] 转换为 ReadOnlySpan<byte> ?

ios - 当存在带有物理体的 SkSpriteNode 时,TouchesMoved() 滞后非常不一致

iphone - 如何为 SSKeychain 选择帐户和服务值

iphone - 在 UINavigationController 和模式演示中将数据从子级传递到父级的更好方法 : reference to parent or delegates?

c - 初始化零填充数组的运行时

ios - 强制导航栏为状态栏添加空间

ios - swift 静态库

ios - 从 PWA 向 iOS 发送推送通知

iPhone iOS NSMutableAttributedString 编辑器示例