小编Dáv*_*tor的帖子

使用Swift 3检查iOS中的API响应时间?

我知道测试API的响应时间基本上是由服务器或后端端完成的,但是因为我正在为一个应用程序工作,我还需要检查来自iOS End的api响应时间.

我怎样才能做到这一点 ?我读了几个链接,它说使用计时器启动和计时器结束,然后通过endTime - startTime找到响应时间, 但这似乎不方便.

我想使用Xcode(即使XCTest在那里).

这是我的API之一(我在ApiManager类的单独类中编写了所有Web服务使用方法):

LoginVC:

//Call Webservice
let apiManager      = ApiManager()
apiManager.delegate = self
apiManager.getUserInfoAPI()
Run Code Online (Sandbox Code Playgroud)

ApiManager:

func getUserInfoAPI()  {
    //Header
    let headers =       [
        "Accept"        : "application/json",
        "Content-Type"  : "application/json",
    ]

    //Call Web API using Alamofire library
    AlamoFireSharedManagerInit()
    Alamofire.request(HCConstants.URL, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON {  response in

        do{
            //Checking For Error
            if let error = response.result.error {
                //Stop AcitivityIndicator
                self.hideHud()
                //Call failure delegate method
                //print(error)
                  self.delegate?.APIFailureResponse(HCConstants.EXCEPTION_MESSAGES.SERVICE_FAILURE)
                return
            } …
Run Code Online (Sandbox Code Playgroud)

performance response ios swift3

5
推荐指数
3
解决办法
4737
查看次数

WKRefreshBackgroundTask尝试访问文件时出错bktasksnapshot_(null)

在watchOS 4.0(Xcode 9.0 beta 6)中执行后台任务时,我收到类似于下面的错误消息.它们似乎没有引起任何问题,但我不确定.有没有人知道是什么导致这些错误被记录,如果有修复或方法来抑制它们?

2017年8月24日09:03:40.130009-0400 cfanow关注应用信息[6906:377766] [bg_app_refresh] - [WKRefreshBackgroundTask cleanupStorage] _block_invoke:213:错误试图到达文件:///用户/ justindomnitz /库/开发/ CoreSimulator /设备/ 264AA014-FD6C-426A-88DF-64E502393BAF /数据/容器/数据/ PluginKitPlugin/107681EE-B30E-49CD-9416-8F030D1CA0BF /库/ com.apple.watchkit/bktasksnapshot_(空):错误域= NSCocoaErrorDomain代码= 260"无法打开文件"bktasksnapshot_(null)",因为没有这样的文件." 的UserInfo = {NSURL =文件:///用户/ justindomnitz /库/开发商/ CoreSimulator /设备/ 264AA014-FD6C-426A-88DF-64E502393BAF /数据/容器/数据/ PluginKitPlugin/107681EE-B30E-49CD-9416-8F030D1CA0BF /库/ com.apple.watchkit/bktasksnapshot_(空),NSFilePath = /用户/ justindomnitz /库/开发商/ CoreSimulator /设备/ 264AA014-FD6C-426A-88DF-64E502393BAF /数据/容器/数据/ PluginKitPlugin/107681EE-B30E- 49CD-9416-8F030D1CA0BF /库/ com.apple.watchkit/bktasksnapshot_(空),NSUnderlyingError = 0x79f3f3c0 {错误域= NSPOSIXErrorDomain代码= 2 "没有这样的文件或目录"}}

swift watchkit watchos-4

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

如何检测 Apple Watch 屏幕截图事件/数字表冠 + 侧边按钮按下?

例如,当用户同时按下数字表冠和侧面按钮(又名截屏)时,本机锻炼应用程序和 Sportstracker 能够暂停锻炼。

我需要这样的东西,但我在文档或网上其他地方找不到任何有关它的信息。对于 iOS,有“notificationUIApplicationUserDidTakeScreenshot”,但这在 watchOS 上不起作用。

有人知道怎么做吗?它是公开可用的还是私有 API?是我看起来不够好吗?

screenshot ios swift watchkit

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

NSURLConnection 完成时出现错误 - 代码 -1002 修复不起作用

我收到此错误 NSURLConnection 已完成,错误代码 -1002。我已将下面的代码添加到我的 info.plist 中。有谁知道为什么?

提前致谢

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionMinimumTLSVersion</key>
    <string>TLSv1.0</string>
</dict>
Run Code Online (Sandbox Code Playgroud)

iphone ios swift

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

如何约束协议类型的参数以符合Swift 4中的AnyObject?

以一个非常接近在下面看一下:

// Note that this protocol can only be applied to reference types.
protocol Ref: class {
  var zibbles: Int { get set }
}

class Reference: Ref {
  var zibbles: Int = 42
}

// Note very carefully that we are NOT passing an
// instance, but a type itself.
func thwip<T: AnyObject>(into target: T.Type) {

}

// This compiles.
thwip(into: Reference.self)

// This fails to compile.
thwip(into: Ref.self) 
Run Code Online (Sandbox Code Playgroud)

无论情况多么罕见,这是语言应该能够完成的事情.编译器知道Ref必须符合的任何实例AnyObject,因此类型约束thwip应该可以工作,但事实并非如此.

请注意,如果我们 …

swift swift-protocols

5
推荐指数
0
解决办法
104
查看次数

类型“T”的值没有使用根类型“T”的键路径的动态成员“对象”

我有一堂课是这样的:

class ObjectA:ObservableObject { 
  @Published var type:ObjectSheetType = .none
}
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的类来处理此类对象的实例:

class ProcessObject {

  @ObservedObject private var object:ObjectA

  init(object:ObjectA) {
    self.object = object
  }

  process() {
    if object.type == .big {
     // bla bla
    }
    ...
  }
Run Code Online (Sandbox Code Playgroud)

然后我决定添加另一个类:

class ObjectB:ObservableObject { 
  @Published var type:ObjectSheetType = .none
}
Run Code Online (Sandbox Code Playgroud)

和一个协议

protocol ObjectProtocol {
  var type:ObjectSheetType { get set }
}
Run Code Online (Sandbox Code Playgroud)

该协议已添加到以下两个类中:ObjectAObjectB

ProcessObject然后修改该类以接受两种类型的对象:

class processObject<T:ObjectProtocol, ObservableObject > {

  @ObservedObject private var object:T

  init(object:T) {
    self.object = object
  } …
Run Code Online (Sandbox Code Playgroud)

generics protocols swift

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

组合类型别名的协议和空一致协议之间的区别

Swift 中这两者有区别吗?

  • protocol ABProtocol: AProtocol, BProtocol {}
  • typealias ABProtocol = AProtocol&BProtocol

swift swift-protocols

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

MainActor 隔离的可变存储属性为何会出现可发送错误?

我正在尝试使一个类符合Sendable. 我有一些可变的存储属性导致了问题。但是,我无法理解的是 MainActor 独立属性不允许我的类符合 Sendable。但是,如果我将整个班级标记为 a @MainActor,那就没问题了。然而,我实际上并不想让全班都遵守@MainActor

举个例子,看下面的代码:

final class Article: Sendable {
  @MainActor var text: String = "test"
}
Run Code Online (Sandbox Code Playgroud)

它给出了这样的警告:Stored property 'text' of 'Sendable'-conforming class 'Article' is mutable

有人可以解释为什么吗?我认为与演员隔离会很好。

swift swift-concurrency

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

Xcode 无法推送文件,因为“与服务的通信已中断”

我一直在尝试将我的项目从 xcode 推送到 github,但它不断给我一条错误消息,表明与服务的通信已中断。以前的提交和推送都有效,但现在坏了。我已经尝试过重新启动计算机和 Xcode,但仍然无法正常工作。我正在尝试用一些视频文件在这里推送大约 4-5 个提交。我在这里看到了类似的问题,但解决方案并没有真正帮助。

在此输入图像描述

每当我尝试推送时,在长时间加载后都会收到此错误消息。提交有效,但推送无效。

git xcode github xcode14

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

.xcstrings 目录中的换行符

我正在尝试向新 Xcode 15 字符串目录(又名 xcstrings)中的字符串添加换行符。我什么也没想,就在\n想要换行的地方添加了平常的内容。

但在我的 SwiftUI 视图中,我可以看到实际转义的内容\n,并且文本不会换行。因此,文本“lorem ipsum\ndolor”将作为“lorem ipsum\ndolor”呈现给用户。

如何在不使用目录中的多个独立字符串的情况下创建带有有意换行符的文本?

xcode localization xcode15 xcstrings

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