从 Swift 命令行程序使用 NSURLSession

2023-12-26

我正在尝试测试一些概念验证命令行应用程序,然后将其集成到更大的应用程序中。我想做的是使用 NSURLSession 下载一些数据这个例子 https://medium.com/swift-programming/learn-nsurlsession-using-swift-ebd80205f87c。然而,如果我使用简单的 OS X 命令行应用程序中给出的示例,那么该应用程序会在检索数据之前退出。

如何使用 NSURLSession 从独立命令行应用程序下载数据?我读到的是使用NS运行循环 https://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/index.html然而我还没有在 Swift 中找到一个清晰的例子,所以如果 NSRunLoop 实际上是可行的方法,那么任何例子都会受到赞赏。

任何其他从 Swift 命令行应用程序的 URL 下载数据的策略也是受欢迎的(无限 while 循环?)。


您可以使用信号量来阻止当前线程并等待 URL 会话完成。

创建信号量,启动 URL 会话,然后等待信号量。从 URL 会话完成回调中,向信号量发出信号。

您可以使用全局标志(声明一个易失性布尔变量)并从 while 循环中轮询该标志,但这并不是最佳选择。一方面,您不必要地消耗了 CPU 周期。

这是我使用游乐场所做的一个简单示例:

import Foundation

var sema = DispatchSemaphore( value: 0 )

class Delegate : NSObject, URLSessionDataDelegate
{
    func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
    {
        print("got data \(String(data: data, encoding: .utf8 ) ?? "<empty>")");
        sema.signal()
    }
}

let config = URLSessionConfiguration.default
let session = URLSession(configuration: config, delegate: Delegate(), delegateQueue: nil )

guard let url = URL( string:"http://apple.com" ) else { fatalError("Could not create URL object") }

session.dataTask( with: url ).resume()    

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

从 Swift 命令行程序使用 NSURLSession 的相关文章

  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • 安装 Ruby 后,MAC OS X 上的活动开发人员路径无效

    我收到此错误 xcrun 错误 无效的活动开发人员路径 Applications Xcode app 缺少 xcrun Applications Xcode app usr bin xcrun This solution https sta
  • macOS 应用程序中还需要 Swift 的嵌入式 dylib吗?

    Swift 5 发行说明说 对于运行 iOS 12 2 watchOS 5 2 和 tvOS 12 2 的设备 Swift 应用程序不再在构建变体中包含 Swift 标准库和 Swift SDK 覆盖的动态链接库 但在同一上下文中没有提及
  • 在 Swift 3 中单击和双击 UITableViewCell

    我在 TableView Cell 上有故事板 segue 我用它来在单元格单击中传输到另一个 VCdidSelectRowAt方法 现在我双击了TapGestureRecognizer处理手机上的点击问题 问题是 单击时 segue 正在
  • 在 Swift 中将 Int 转换为 UInt32

    我正在制作一个 Tcp 客户端 因此使用CFStreamCreatePairWithSocketToHost它期望第二个参数为 UInt32 这是我正在尝试做的事情的示例 func initNetwork IP String Port In
  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • iOS Swift 检测键盘事件

    我能以某种方式检测来自 iOS 键盘的事件吗 我想检测此类事件UIViewController哪个没有UITextField或任何此类物体 我只有四个圆圈UIView我想在按下键盘上的按钮时将它们涂成不同的颜色 您没有任何对象可以从键盘获取
  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • 将文本粘贴到 Macintosh 上的 emacs 中

    我使用的是 Macintosh 并且使用 终端 作为我的 shell 当我从任何窗口复制文本 通过鼠标拖动 然后鼠标右键菜单 gt 复制 然后将文本 鼠标右键 gt 粘贴 粘贴到运行 emacs 的终端中时 它不会充当粘贴 相反 它就像输入
  • 如何添加授权以从新钥匙串对应用程序进行代码签名,而无需任何人工交互

    我正在尝试使用特定证书自动化构建 iPhone 应用程序的过程 因此 想象一下 如果不同的用户将他们的证书上传到系统中 并且可以立即用于代码签名 我想在没有任何交互的情况下做到这一点 我也不想用不同的用户证书弄乱系统或登录钥匙串 为此我有
  • LaunchAgent 不运行 shell 脚本

    在 Catalina 之前的 macOS 下 我有一个每天运行 shell 脚本的 LaunchAgent 升级并切换到 zsh 后 它不起作用 我检查过的事情 shebang 切换到 zsh shell脚本可以从命令行手动执行 sh 在系
  • 如何在 EKRecurrenceRule 中设置一周中某一天的数组?

    我想在用户选择的特定日期每周添加事件 可以是一个或多个 也可以是一整天 我将用户选择的日期值存储在模型类变量中 但是 当我添加事件并选择日期时 假设今天是星期一 我选择星期二和星期三并保存 然后我查看周一和周三添加的 iPhone 日历 我
  • 水银大号

    你知道如何让 Quicksilver 在屏幕上显示大量的大字体吗 通过点击 然后输入自由文本 选择 操作 下的 查看大字体 并按 Enter 键 好吧 有谁知道一种以编程方式做到这一点的方法吗 另外 quicksilver 是必需的还是内置
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 在 Mac 上使用“sudo gem install nokogiri”安装 nokogiri 时出错

    我试图安装 nokogiri 因为它是启动 Rails 所必需的 rails s usr local rvm gems ruby 1 9 3 p194 global gems bundler 1 1 5 lib bundler spec s
  • Swift:在 Core Data 中存储自定义类的数组

    我是核心数据新手 但对于我的一个新项目 我想将我的数据保存到核心数据 我想创建一个 Reptile 类 其中包含几个自定义类数组 如果没有核心数据 我会得到这样的东西 import Foundation import UIKit class
  • 如果目录不存在,有没有办法让 mv 创建要移动到的目录?

    因此 如果我在主目录中并且想将 foo c 移动到 bar baz foo c 但这些目录不存在 是否有某种方法可以自动创建这些目录 以便你只需要输入 mv foo c bar baz 一切都会顺利吗 似乎您可以将 mv 别名为一个简单的
  • 在Swift中计算没有透明度的颜色,通过用透明颜色叠加颜色获得

    我有一个具有非透明颜色的原始 UIVieworgColor 这是由一个覆盖 UIView 覆盖的 该 UIView 具有overlayColor具有透明度 alpha 通道 鉴于这两种颜色orgColor and overlayColor我
  • 使用“pythonw”(而不是“python”)运行应用程序时找不到模块

    我尝试了这个最小的例子 from flask import Flask app Flask name app route def hello world return Hello World if name main app run deb
  • 小部件配置在 macOS 上不起作用

    我为我的 iOS 应用程序制作了一个小部件 效果很好 现在我正在将其移植到我的 macOS 应用程序中 但不知何故 小部件配置不起作用 这些项目已显示 但我无法以某种方式选择它们 查看屏幕截图 但请看一下我制作的视频 https youtu

随机推荐

  • Django 上多租户应用程序的最佳架构

    我一直在思考创建基于多租户应用程序的正确 最佳方法 关于姜戈 一些解释 应用程序可由多个租户 tenant1 tenant2 使用 所有租户个人数据都必须受到保护 防止其他租户 及其用户 访问 租户可以选择为应用程序对象创建额外的自定义字段
  • 计算数组数组中的项目数?

    如果我有一个声明为的对象 let compoundArray Array
  • 在 Visual Studio 中对文件进行分组

    我正在考虑在 Visual Studio 中整理我的项目布局 我想知道是否有任何 hack 插件或技巧可以将 xml 文件与 cs 文件关联起来同名所以它们出现在我的解决方案导航器 资源管理器中 类似于代码隐藏文件与其 aspx 关联的方式
  • 从 Mac 上的 SWT 应用程序打开 LWJGL 窗口

    我有一个 SWT 应用程序 可以在按下按钮后打开 OpenGL 窗口 使用 LWJGL 库 它应该关闭它的主 SWT 窗口并打开一个带有 OpenGL 上下文的新窗口 在 Windows 上运行良好 在 Mac 上 我收到此错误 2010
  • Azure 托管和 MVC5 报告

    我正在使用 Visual Studio 2013 开发托管在 Azure 上的 MVC5 EF6 Web 应用程序 我刚刚完成需要创建报告的开发部分 我试图使用 Microsoft ReportViewer 来实现此目的 尽管它在本地工作得
  • Haskell:有条件地中断循环

    我想在这样的情况下打破循环 import Data Maybe fromJust isJust Maybe Just tryCombination Int gt Int gt Maybe String tryCombination x y
  • LaTeX 相当于 Google Chart API

    我目前正在寻找不同的解决方案 将二维数学公式放入网页中 我认为维基百科解决方案 从 LaTeX 源代码生成 png 图像 已经足够好了 直到我们在网络浏览器中获得对 MathML 的支持 我突然意识到也许可以创建一个谷歌图表 API htt
  • 配置next.config文件

    我正在使用 Next js 并想添加反应语义用户界面 https react semantic ui com 使用他们的登录组件之一 在前端我收到此错误 编译失败 node modules semantic ui css semantic
  • R (dplyr):查找行特定范围内的所有行

    我有一个数据集 其中每一行都由住院 ID 标识 每行包含有关住院 ID 发生医院 ID 以及给定住院的入院日期和出院日期的信息 我想知道 对于每次住院治疗 在该次住院开始前 30 天内在指定医院结束的所有其他住院治疗的 ID 以下是 2 家
  • 在Delphi中是否可以将接口绑定到未实现它的对象

    我知道 Delphi XE2 有新的 TVirtualInterface 用于在运行时创建接口的实现 不幸的是我没有使用 XE2 我想知道在旧版本的 Delphi 中做这种事情涉及什么样的黑客行为 假设我有以下界面 IMyInterface
  • AVCaptureSession 没有提供良好的照片质量和良好的分辨率

    我正在与AVCaptureSession用于捕获图像 它工作正常 但没有给出好的解决方案 我将其与iPhone相机拍摄的图像进行了比较 发现iPhone相机拍摄的图像比iPhone相机拍摄的图像要好得多AVCaptureSession im
  • 无法跨子域读取cookie(owa_cookie)

    在我的生产环境中 我的前端位于 a example com 后端位于 b example com 我正在使用 javascript 在 example com 域的路径 中创建一个 cookie 以便从任何子域读取它 当我尝试使用 owa
  • Dart 中包含异步函数的测试函数

    我想测试一个调用其他异步函数的函数 但我不知道如何编写它 函数会像这样 function X x Y y x doSomethingAsync then result if result null y doSomething 我想模拟 X
  • XmlReader持续读取

    我有一个非常大的 xml 文件 这是 xml 格式的简化版本
  • Python Windows 路径正则表达式

    我花了两个小时来解决这个问题 我有这个字符串 C Users Bob luxshop jeans diesel qd images Livier 11 png 我有兴趣获得 Livier 11 png但这对我来说似乎不可能 我怎样才能做到这
  • 客户端证书始终为空

    我已经安装了一个证书Personal也受信任的根证书颁发机构 已尝试使用这段代码发布到端点 public void Post try var clientCert LoadFromStore MyThumbprint var request
  • PHP 在单独的驱动器上上传/读取文件

    我需要能够在单独的驱动器上上传 查看文件 现在 我的网站位于 C 驱动器上的 htdocs 文件夹中 我们已在 D 驱动器上分配了空间来上传和查看文件 使用下面的代码 我可以使用 scandir 来查看 htdocs 文件夹中的内容 但我需
  • html 标签属性“data-setbg”在 React 项目中不起作用

    我正在转换 HTML网站模板 https colorlib com wp template leramiz 进入一个React项目 在该模板中有一个名为data setbg的属性 但没有提供标准的html属性 我想知道什么样的库或框架提供这
  • 触摸事件不起作用?在 UImageview 中?

    我在 viewcontroller m 的 viewdidload 中完成了以下操作 img UIImageView alloc initWithFrame CGRectMake 0 0 320 480 img multipleTouchE
  • 从 Swift 命令行程序使用 NSURLSession

    我正在尝试测试一些概念验证命令行应用程序 然后将其集成到更大的应用程序中 我想做的是使用 NSURLSession 下载一些数据这个例子 https medium com swift programming learn nsurlsessi