小编Pet*_*her的帖子

带有服务器发送事件的 URLSession 有时会返回 kCFErrorDomainCFNetwork 303

在我们的应用程序中,我们通过服务器发送的事件请求信息流。为此,我们使用 引擎盖下使用的小型库IKEEventSourceFoundation.URLSession。

此信息以小型 JSON 包发送,例如:

{"type":"update","data":{"id":"1234","name":"someName","someOtherField":33,"size":"20","someAddress":"Awesome Street 111"}}

现在这对我们来说效果很好,但我们注意到有时会出现以下错误:

Error Domain=kCFErrorDomainCFNetwork Code=303 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x610000a84510 [0x103ccbe40]>{length = 16, capacity = 16, bytes = 0x100201bbb9131fbd0000000000000000}, _kCFStreamErrorCodeKey=-2201, _kCFStreamErrorDomainKey=4}

我理解的是kCFErrorHTTPParseFailure它试图解析的字符串似乎只是 JSON 包的一部分,例如:

{"type":"update","data":{"id":"1234","name":"so

我们目前的理解是,URLSession 正在缓冲数据,有时它会填满,最后一部分会被切掉。我们可以在终端中使用curl http://our.service.com并查看一个工作示例curl -N http://our.service.com

有人知道如何将此选项添加到URLSession,URLSessionConfiguration或URLSessionTask. 或者是否有人有其他解释或解决方案(可能是服务器端)由于此错误,我们的用户有时会错过对数据的更新,我们认为这是一些无法解释的反馈的原因。

顺便说一句,我们在相应的 Android 应用程序中遇到了同样的问题

ios server-sent-events urlsession

7
推荐指数
1
解决办法
682
查看次数

systemLayoutSizeFittingSize:在UILabel上的行为不像预期的那样

我发现了systemLayoutSizeFittingSize:我预期的方法的不同行为.

这是一个快速Playground的代码,它演示了行为,但它在Objective-C中是相同的:

import UIKit
import Foundation

var label = UILabel()

label.text = "This is a Test Label Text"

label.numberOfLines = 0

label.font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)

label.preferredMaxLayoutWidth = 40

let layoutSize = label.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)

let intrinsicSize = label.intrinsicContentSize()
Run Code Online (Sandbox Code Playgroud)

我原以为是,layoutSize并且intrinsicSize是一样的.

但是,在这种情况下,layoutSize是(w 173, h 20)和intrinsicSize是(w 40, h 104)

我希望两者都是,intrinsicSize但它似乎systemLayoutSizeFittingSize:忽略了preferredMaxLayoutWidth

有人能够向我解释一下吗?

编辑:还

label.setNeedsLayout()
label.layoutIfNeeded() 

let layoutSize = label.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)

let intrinsicSize = label.intrinsicContentSize()
Run Code Online (Sandbox Code Playgroud)

不会改变结果

cocoa-touch ios autolayout swift

5
推荐指数
1
解决办法
4324
查看次数

如何在 Swift Playground 中获取布局跟踪

我正在 Swift Playground 中制作一些视图的原型。

import UIKit
import XCPlayground

let containerView = UIView(frame: CGRect(origin: CGPointZero, size: CGSize(width: 320, height: 300)))

XCPShowView("Container View", containerView)
Run Code Online (Sandbox Code Playgroud)

我正在使用此容器视图来放入一些视图并使用约束对其进行布局。现在我真的很想从中获得一个 LayoutTrace,就像来自

po [[UIWindow keyWindow] _autolayoutTrace]
Run Code Online (Sandbox Code Playgroud)

这将使我能够轻松找到一些模棱两可的布局。

有任何想法吗?

xcode ios swift swift-playground

2
推荐指数
1
解决办法
477
查看次数

NSURL 失败初始化器 initWithString:在 Swift 中的空字符串上不返回 nil

在 Playground 中很容易重现

import Foundation

let urlString = ""

let url = NSURL(string: urlString)

print(url)
Run Code Online (Sandbox Code Playgroud)

URL的结果是不知何故(no URL)而不是预期的nil 和打印输出Optional(),既没有.Some或.None。

我真的很想对此有所了解,因为它让我感到惊讶并导致生产代码崩溃。

nsurl swift

1
推荐指数
1
解决办法
1225
查看次数