在 Swift 3 中获取 GCD 标签

2023-12-26

我有一些代码可以获取当前 GCD 队列的标签以用于日志记录,在 Swift 2 中如下所示:

if let queueName
    = String(UTF8String: dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL)) where !queueName.isEmpty {
    detailedMessage += "[" + queueName + "] "
}

Xcode 8 将其转换为 Swift 3 后,它看起来像这样:

if let queueName
    = String(validatingUTF8: DISPATCH_CURRENT_QUEUE_LABEL.label), !queueName.IsEmpty {
    detailedMessage += "[" + queueName + "] "
}

然而,当我构建时,Xcode 给了我以下错误:

元组类型“()”的值没有成员“标签”

我还没有找到任何方法来获取 Swift 3 中的当前队列标签。有人可以帮忙吗?

Thanks,
David

UPDATED这是上下文的函数:

public func log(_ message: String,
                tag: String,
                level: Logger.LogLevel,
                userInfo: [String : String]?,
                functionName: StaticString,
                fileName: StaticString,
                lineNumber: Int) {

    var detailedMessage = ""

    let formattedDate = self._dateFormatter.string(from: Date())
    detailedMessage += "\(formattedDate) "

    detailedMessage += "[\(level.description)] "

    if Thread.isMainThread {
        detailedMessage += "[main] "
    } else {
        if let threadName = Thread.current.name , !threadName.isEmpty {
            detailedMessage += "[" + threadName + "] "
        } else if let queueName
            = String(validatingUTF8: DISPATCH_CURRENT_QUEUE_LABEL.label) , !queueName.isEmpty {
            detailedMessage += "[" + queueName + "] "
        } else {
            detailedMessage += "[" + String(format:"%p", Thread.current) + "] "
        }
    }

    let lastPathComponent = NSString(stringLiteral: fileName).lastPathComponent
    detailedMessage += "[" + lastPathComponent + ":" + String(lineNumber) + "] "

    detailedMessage += "\(functionName) "

    let fullMessage = self.messageWithTag(tag, message: message)
    detailedMessage += "> \(fullMessage)"

    NSLog("\(fullMessage)")
}

你可以使用那个方法

let cName = __dispatch_queue_get_label(nil)
let name = String(cString: cName, encoding: .utf8)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 3 中获取 GCD 标签 的相关文章

  • iOS - NSNotificationCenter 多个UIKeyboard通知

    我有两个视图控制器 我们称它们为 A 和 B 1 在 A 中 我显示一个包含文本字段的 popOver 2 B中有一个UITextView用于简单的文本编辑 我必须管理 A 和 B 中的键盘才能滚动键盘隐藏的内容 我知道如何重新定位内容 我
  • iOS Storyboards 我应该使用它们吗? [复制]

    这个问题在这里已经有答案了 我是 iOS 开发新手 尚未创建应用程序 但我向我的朋友寻求建议 他在市场上拥有非常高评价的应用程序 他说不要使用故事板 尽管我很想听取他的建议 但它们似乎确实很有帮助 这是否会在将来给我的应用程序带来问题 我有
  • GMSMapView 中的倒多边形

    我必须在我的 iPhone 项目中使用 Google 地图 并且我正在使用 GMSPolygon 来绘制多边形 但是如何填充地图上除多边形内部之外的所有位置 就像下图一样 谢谢 我玩过你的问题 主要思想是用多边形填充整个地球 然后为您的特定
  • 为什么 Xcode 4 不会对我未完整实现 UITableViewDataSource 协议发出警告?

    如果我在 Xcode 中使用以下代码声明并不完全实现我自己的协议 一些协议 h protocol SomeProtocol
  • 这个错误是无效上下文0x0吗?

    我在ViewDidLoad中编写了以下代码 Implement viewDidLoad to do additional setup after loading the view typically from a nib void view
  • 如何从代码隐藏中设置 CarouselView 的项目?

    我有一个 CarouselView 它绑定到图像的 ItemsSource 但我想通过更改 CarouselView 的索引来更改当前显示的图像 我尝试使用 CarouselView Position 作为必须选择的元素的索引 但不幸的是这
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • 为什么我的 tableView 函数运行了 3 次?

    我有一个 UITableView 并且有执行它所需的方法之一 func tableView tableView UITableView numberOfRowsInSection section Int gt Int println sec
  • 在 Swift 中自动移动 UISlider

    我想在按下按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次按下按钮时将其停止在当前位置 我想使用 Swift 我遇到的主要问题是函数 slider setValue 太快了 我希望动画更慢 IBAct
  • 线程 1:信号 SIGABRT - AppDelegate.h

    main m Journey Created by Julian Buscema on 2014 07 13 Copyright c 2014 Julian Buscema All rights reserved import
  • 无法转换“UINavigationController”类型的值

    我正在为我的应用程序实现一个搜索界面 因此基本上我会将搜索关键字从一个 ViewController 传递到另一个 ViewController 我已经多次进行过这种类型的参数传递 但这次似乎有些奇怪 目标 ViewController 嵌
  • Objective C UIImagePNGRepresentation内存问题(使用ARC)

    我有一个基于 ARC 的应用程序 它从 Web 服务加载大约 2 000 个相当大 1 4MB 的 Base64 编码图像 它将 Base64 解码后的字符串转换为 png图像文件并将其保存到磁盘 这一切都是在一个循环中完成的 我不应该有任
  • 我什么时候应该对 IBOutlet 使用弱或强限定符? [复制]

    这个问题在这里已经有答案了 可能的重复 ARC 下 IBOutlets 应该强还是弱 https stackoverflow com questions 7678469 should iboutlets be strong or weak
  • 对使用phonegap和钛的质疑[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 最近我听说了 PhoneGap 和 Titanium 移动网络应用程序的开发 我分析了这两个 Web 应用程序 并了解了如何使用它们以
  • Xcode 9 中的“addingPercentEncoding”是否损坏?

    在 Swift 3 x 和 Xcode 9 beta 2 中 使用addingPercentEncoding https developer apple com documentation swift string 1690785 addi
  • 应用程序未通过协同设计验证?

    我在提交 iPhone 申请时遇到问题 我看到了一些类似的问题 但没有找到答案 当我存档项目并单击 验证 时 收到错误消息 应用程序未通过协同设计验证 签名无效 或者未使用 Apple 提交证书进行签名 我假设我在协同设计部分做错了什么 我
  • Swift 中通过不同类调用委托方法

    我正在获取 JSON 菜单 一旦 JSON 返回 我想运行 menuReady 来更新表的内容在 SomeTableViewController 类中 但下面的代码似乎不起作用 AIM Run 菜单就绪 JSON 返回后更新内容 PROBL
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法
  • 为什么这个 SKPhysicsJointPin 不能将这 2 个精灵保持在一起?

    我显然不太了解 SKPhysicsJoint 但是除了 Apple 文档之外 网上的信息还很少 下面的代码有什么问题 我认为应该保持头部和颈部永久连接 我的意图是它们就像两张带有大头针的纸 这样它们可以旋转一点 但不仅仅是完全分开 当我运行
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • Android Eclipse 插件太慢

    我目前使用的是带有 1 83GHz 处理器和 1 GB RAM 的 Windows 7 机器 我曾经能够使用所有应用程序 没有速度问题 我最近在 Eclipse Helios 中安装了 Android 插件 现在 Eclipse 速度严重减
  • 循环内的侦听器不允许更改外部布尔标志

    继我之前的帖子之后here https stackoverflow com questions 15762311 add a keylistener inside a loop is it possible 我写了一个监听器 Overrid
  • 在 HTML5 和 JavaScript 中使用 Google 地图室内地图 API

    我想使用 HTML5 和 JavaScript 创建一个室内地图应用程序 我创建了一个简单的路线图应用程序 但是当我单击放大任何室内兼容的建筑物 购物中心时 没有级别或地板选项 那么 HTML5 和 Javascript 支持室内功能吗 在
  • 使用 itextsharp 的文本的 x 和 y 坐标

    当我使用 itextsharp 提取文本时 我将获得文本的 x 和 y 坐标 如果我根据 x y 位置将文本从 pdf 转换为 html 则通过使用这 2 个坐标来更改文本位置 获取我使用的 x y 坐标 矢量 curBaseline re
  • 我的班级实例中出现奇怪的内存覆盖问题

    这个问题与this https stackoverflow com questions 6649567 how to check if network shared exe file is used by more than one use
  • 具有 null 安全性的 Flutter / Dart 包integration_test

    据我了解 包集成 测试 https pub dev packages integration test包不是空类型安全的 该包可以用于当前的 Flutter 版本 版本 gt 2 0 吗 如果没有 还有其他选择吗 正如自述文件中所述 该包是
  • SAS LOOP - 从具有值的记录创建列

    假设我有随机诊断代码 例如 001 v58 142 如何从记录中的代码构造列 Input id found code 1 1 001 2 0 v58 3 1 v58 4 1 003 5 0 v58 15000 0 v58 Output id
  • Twilio 在打电话时说动词

    基于这个问题 https stackoverflow com questions 6863305 twilio say verb nested into a dial verb 它非常接近我想要的 当双方建立连接时 我们尝试在通话期间触发
  • 从 Apache Velocity 模板访问常量值?

    是否可以从 Velocity 模板访问常量值 即 Java 类中定义的公共静态最终变量 我希望能够写出这样的东西 if a lt Long MAX VALUE 但这显然不是正确的语法 有很多种方法 1 您可以将值直接放入上下文中 2 您可以
  • 如何优化 MySQL 更新查询?

    我有一个包含 300 000 条记录的表 在此表中有重复的行 我想更新列 flag TABLE number flag more column ABCD 0 ABCD 0 ABCD 0 BCDE 0 BCDE 0 我使用此查询
  • 限制 Django 模型中的递归外键深度

    我有一个 Django 模型 其中 self 的外键可为空 我有兴趣对递归深度引入硬限制 例如 10 哪里是检查这个的正确位置以及我应该在那里抛出什么样的异常 我的意思的伪示例 def limit recursion depth self
  • Apache mod_rewrite 未将表达式映射到参数

    我有一个网站使用apache mod rewrite并且在过去 6 个月里一直工作 没有出现任何错误 我有以下重写规则 RewriteRule products a z products php category 1 NC L 这是我页面中
  • WooCommerce:将自定义 Metabox 添加到管理订单页面

    我目前已成功向我的 WooCommerce 产品页面添加一个字段 该字段显示值 在购物车 前端 中 在结账页面 前端 在订单页面 前端 并在管理个人订单页面 后端 中 问题 它没有在管理订单 自定义字段 Metabox 中显示为自定义字段及
  • 如何在无限行模型中设置初始起始页?

    我使用的是带有无限行模型和分页功能的 Ag Grid 版本 20 0 0 我希望能够设置第一次加载的初始页面 但我没有看到任何允许我自定义它的属性 他们只提供方法paginationGoToPage更改页面 但此方法要求首先加载网格 这迫使
  • 如何在sql server management studio 2012中创建复合外键

    我可以通过选择两列 OrderId CompanyId 并右键单击并设置为主键 在 sql server management studio 2012 中成功创建复合主键 但我不知道如何使用 sql server management st
  • Firebase 测试实验室对 Appium 的支持

    有谁知道 Firebase 测试实验室是否支持 Appium 测试框架 至少在路线图中吗 由于 Firebase 由 Google 提供支持 因此您很难指望它会优先支持开源社区驱动的框架 而 Appium 正是如此 目前 Firebase
  • 共享指针如何工作?

    共享指针如何知道有多少指针指向该对象 在本例中为shared ptr 基本上 shared ptr有两个指针 一个指向共享对象的指针和一个指向包含两个引用计数的结构体的指针 一个用于 强引用 即具有所有权的引用 另一个用于 弱引用 即不具有
  • Google Play Install Referrer API 与 INSTALL_REFERRER 广播

    最近Google发布了Google Play Install Referrer API 公告 https android developers googleblog com 2017 11 google play referrer api
  • 类库项目文件未编译为 .dll 或调试

    在我的解决方案中 我有一个编译成 dll 的类库项目 我有一个网络项目 我有多个具有不同网络项目但具有相同类库的解决方案 类项目中的文件之一 utilities cs 突然不会编译到 dll 中 我对此文件进行了更改 但更改不会显示在网站上
  • 在 Swift 3 中获取 GCD 标签

    我有一些代码可以获取当前 GCD 队列的标签以用于日志记录 在 Swift 2 中如下所示 if let queueName String UTF8String dispatch queue get label DISPATCH CURRE