魏名华

不要偷懒,做更好的自己

Nothing


No Welcome Message

Flatmap

FlatMap

    let response = Observable.from([repo])
      .map { urlString -> URL in
        return URL(string: "https://api.github.com/repos/\(urlString)/events")!
      }
      .map { [weak self] url -> URLRequest in
        var request = URLRequest(url: url)
        if let modifiedHeader = self?.lastModified.value {
          request.addValue(modifiedHeader as String,
                           forHTTPHeaderField: "Last-Modified")
        }
        return request
      }
      .flatMap { request -> Observable<(response: HTTPURLResponse, data: Data)> in
        return URLSession.shared.rx.response(request: request)
      }
      .share(replay: 1, scope: .whileConnected)

    
      response.filter { ((response: HTTPURLResponse, data: Data)) -> Bool in
          <#code#>
      }


     // 如果把flatmap改为map
//    response.filter { (Observable<(response: HTTPURLResponse, data: Data)>) -> Bool in
//        <#code#>
//    }

    response
      .filter { response, _ in
        return 200..<300 ~= response.statusCode
      }
      .map { _, data -> [[String: Any]] in
        guard let jsonObject = try? JSONSerialization.jsonObject(with: data, options: []),
          let result = jsonObject as? [[String: Any]] else {
            return []
        }
        return result
      }
      .filter { objects in
        return objects.count > 0
      }
      .map { objects in
        return objects.flatMap(Event.init) // 返回的是[Event], 如果是map,返回的是[Event?]
      }