我是 Flutter 的新手。我正在发出网络请求并且得到了正确的响应,但数据是 Gzip 压缩的。我已经在 Swift 中解压缩了相同的内容,但是使用 Flutter,我无法做到这一点。有人可以帮忙吗?
这是我尝试过的:
import 'dart:convert';
import 'package:http/http.dart';
import 'package:archive/archive.dart';
import 'package:flutter_app/Constants/constants.dart';
class ServiceHelper {
static final sharedInstance = ServiceHelper();
Future<Response> sendRequest({String path, Map<String,dynamic> params}) async {
final String url = Constants.testURL+path;
var body = jsonEncode(params);
Response response = await post(url, body:body);
final gZipped_data = GZipDecoder().decodeBytes(response.bodyBytes);
print(gZipped_data); //flutter: [123, 34, 115, 116, 97, 116, 117, 115, 34, 58, 50, 48, 48, 44, 34, 109, 101, 115, 115, 97, 103, 101, 34, 58, 34, 83, 105, …
Run Code Online (Sandbox Code Playgroud) 我正在学习 JSONParsing。我遵循了教程,得到的是这样的:
guard let url = URL(string: "http://localhost/test-api/public/api/register") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
let newUser = User.init(name: self.collectionTF[0].text, email: self.collectionTF[1].text, password: self.collectionTF[2].text)
do {
let jsonBody = try JSONEncoder().encode(newUser)
request.httpBody = jsonBody
} catch { }
URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else { return }
do {
let json = try JSONSerialization.jsonObject(with: data) as? [String:Any]
print(json!)
DispatchQueue.main.async {
if json!["status"] as! Int == 200
{
GeneralHelper.shared.keepLoggedIn() …
Run Code Online (Sandbox Code Playgroud) 我是单元测试的新手。我已经测试了很多功能并且理解了这个概念,现在我想检查 API。是否可以?大概吧。这是 API:
func sendRequest(path: String, params: Dictionary<String, Any>, showSpinner: Bool, completionHandler: @escaping (JSON, Error?) -> Void) {
if Constants.IS_SIMULATOR {
print("Path: \(path)")
print("Params: \(params)")
}
if Constants.APP_DEL.reachability?.connection == .none {
completionHandler(JSON.null, NSError(domain: "No internet", code: 4, userInfo: nil))
return
}
UIApplication.shared.isNetworkActivityIndicatorVisible = true
if showSpinner {
HUD.show(.labeledProgress(title: "Loading...", subtitle: "Please wait"))
}
if let jsonData = try? JSONSerialization.data(withJSONObject: params, options: .prettyPrinted) {
let url = NSURL(string: String(format: "%@%@", Constants.TEST_URL, path))!
let request = NSMutableURLRequest(url: url as URL)
request.httpMethod = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将自定义形状添加到imageView
. 请检查以下图片。
这是必需的:
这是我到目前为止所做的:
我是新手,Core Graphics
到目前为止我已经做到了:
private func customImageClipper(imageV: UIImageView){
let path = UIBezierPath()
let size = imageV.frame.size
print(size)
path.move(to: CGPoint(x: 0.0, y: size.height))
path.addLine(to: CGPoint(x: 0.8, y: size.height/2))
path.close()
let shape = CAShapeLayer()
shape.path = path.cgPath
imageV.layer.sublayers = [shape]
}
Run Code Online (Sandbox Code Playgroud)
我正在创建一个函数来实现这样的形状,但是每当我将 传递给imageView
这个函数时,我根本看不到任何变化。我知道我必须从一个点移动到另一个点才能达到这个形状,但我从来没有这样做过。任何帮助,将不胜感激。这就是我调用这个函数的方式:
imageV.layoutIfNeeded()
customImageClipper(imageV: imageV)
Run Code Online (Sandbox Code Playgroud)
PS:我没有使用Storyboard
,我以编程方式创建了这个。
我在HackerEarth上玩,我遇到了这个问题.
我尝试做的是比较字符串并检查它们是否具有相同的字符.
var string = ""
while let thing = readLine()
{
string += thing + " "
}
var arrayStr = string.split(separator: " ").map{String(($0))}
var firstString = [String]()
var secondString = [String]()
var cas = arrayStr[0]
for i in 1..<arrayStr.count
{
if i % 2 != 0
{
firstString.append(String(arrayStr[i]))
}
else
{
secondString.append(String(arrayStr[i]))
}
}
print(firstString) //["sumit", "ambuj", "abhi"]
print(secondString) //["mitsu", "jumba", "hibb"]
Run Code Online (Sandbox Code Playgroud)
所以,现在你可以看到第一个索引firstString
和secondString
包含相同的字符,第二个索引相同,但不是最后一个索引.
那么,我该如何比较呢?我尝试过NSCharacter,但是HackerEarth没有尝试过.有任何想法吗?
swift ×4
ios ×3
json ×2
xcode ×2
api ×1
cashapelayer ×1
decode ×1
flutter ×1
gzip ×1
logic ×1
swift4 ×1
uibezierpath ×1
unit-testing ×1
utf-8 ×1