如何从 OSX Swift 命令行工具或 shebang 脚本文件显示窗口?
理想情况下,不使用其他文件。没有故事板。没有西布。
一个示例是具有单个 Swift 文件的 OS X 命令行工具 Xcode 项目。
import Cocoa // AppKit, CoreData, Foundation
let arguments = Process.arguments
if (arguments.contains("usegui")) {
// show arguments in a window with text field and dismiss button
// GIVEN: some NSWindow
let aTextField = NSTextField(frame: NSMakeRect(25, 320, 180, 24))
aTextField.stringValue = arguments.description
let mask = NSTitledWindowMask | NSClosableWindowMask
let aWindow = NSWindow(
contentRect: NSMakeRect(0, 0, 400, 210),
styleMask: mask,
backing: NSBackingStoreType.Buffered,
`defer`: false)
aWindow.contentView!.addSubview(aTextField)
// add button …Run Code Online (Sandbox Code Playgroud) 如何UnsafeMutablePointer<OpaquePointer>在 Swift 中使用 Core Foundation 框架?为什么有一个UnsafeMutablePointer<OpaquePointer>?
给定,一般:UnsafeMutablePointer<SomeType>某处typealias SomeType = OpaquePointer
具体API示例
\n\n// SOURCE: import ApplicationServices.PrintCore\ntypealias PMPrinter = OpaquePointer\nfunc PMSessionGetCurrentPrinter(_ printSession: PMPrintSession, _ currentPrinter: UnsafeMutablePointer<PMPrinter>)\nfunc PMPrinterGetPaperList(PMPrinter, UnsafeMutablePointer<Unmanaged<CFArray>?>)\nRun Code Online (Sandbox Code Playgroud)\n\n具体示例用例:获取打印机支持的纸张列表
\n\nlet printInfo = NSPrintInfo.shared()\nlet printSession = PMPrintSession(printInfo.pmPrintSession())\nvar currentPrinterOptional: PMPrinter? = nil\nPMSessionGetCurrentPrinter(printSession, ¤tPrinterOptional!)\nguard let currentPrinter = currentPrinterOptional else { return }\n\n// Get the array of pre-defined PMPapers this printer supports.\n// PMPrinterGetPaperList(PMPrinter, UnsafeMutablePointer<Unmanaged<CFArray>?>)\nvar paperListUnmanaged: Unmanaged<CFArray>?\nPMPrinterGetPaperList(currentPrinter, &paperListUnmanaged)\nguard let paperList = paperListUnmanaged?.takeUnretainedValue() as [AnyObject]? else …Run Code Online (Sandbox Code Playgroud) 我安装了最新版本的Xcode 9,现在已经重新安装了几次蒸汽,但是每当我尝试构建/运行/更新项目时,我仍然会收到以下错误.
这是我正在使用的
1.) Vapor Toolbox: 3.1.2
2.) Apple Swift version 4.0 (swiftlang-900.0.43 clang-900.0.22.8)
Target: x86_64-apple-macosx10.9
3.) Xcode 9.0
Build version 9M136h
Run Code Online (Sandbox Code Playgroud)
Error: Could not generate Xcode project: error: manifest parse error(s):
/var/folder/60/n3ldjzgs5vsg06v17_1yy44h0000gn/T/TemporaryFile.VwrbJo.swift:41:5
: error: argument 'targets' must preceed argument 'dependencies'
targets" [
^
error: The product dependency 'Vapor' was not found.
error: The product dependency 'FluentProvider' was not found.
error: The product dependency 'Testing' was not found.
Run Code Online (Sandbox Code Playgroud)
这是我的Package.swift文件.看看我原来的错误,我确实尝试切换它们出现在文件中的'targets'和'dependencies'顺序.这没有解决任何问题,并产生以下错误消息: error: argument 'dependencies' must precede argument 'targets'
Package.swift
let package = …Run Code Online (Sandbox Code Playgroud) 动机:能够生成一个基于 SPM 的静态库 Xcode 项目会很有用,该项目可以从另一个(不是基于 SPM 的)Xcode 项目中引用。generate-xcodeproj似乎是一种合理的尝试方法,但是,generate-xcodeprojcreates 是一个动态框架项目,而不是一个静态库项目。
问题:在 之后generate-xcodeproj,需要哪些 Xcode 步骤(对于 Xcode 9 和 Swift 4)将type: .staticSwift 包库静态链接到一个简单的命令行二进制可执行文件中……类似于相应的swift build?
换句话说,如何最终得到一个 SPM 生成的静态库 Xcode 项目,它可以用作非 SPM Xcode 项目中的子项目。
目标:使用 Xcode 生成静态链接的可执行文件,就像swift build从命令行生成的内容一样……为同一个模块产品。
问题是generate-xcodeproj生成的项目创建了一个动态链接的产品(非预期),同时swift build生成了一个静态链接的产品(如预期的)。
示例:考虑两个 Swift Manager Packages (SPM) 包:
TinkerEvalStaticLib? 以swift package init --type library作为起点。TinkerEvalStaticCli? 以swift package …我正在尝试在我的 Swift 项目中使用 PythonKit 来使用一些 Python 代码。为此,我下载了新的 Xcode 11 以将 PythonKit 添加为 Swift 包。添加带有 Swift Package 的 PythonKit 后,我在这里就有了这些项目依赖项。

我想在应用程序启动时使用 Python 代码,因此我将对 Python 代码的调用放在我的应用程序委托中的应用程序函数中。
import UIKit
import PythonKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let sys = Python.import("sys")
print("Python Version: \(sys.version)")
sys.path.append("/Users/me/Documents/MyProject/MyPackage/my_python_main_file")
let pythonAPI = Python.import("my_python_main_file")
pythonAPI.main_function.call()
return true
}
Run Code Online (Sandbox Code Playgroud)
运行我的项目后,出现以下错误:
致命错误:找不到 Python 库。使用 Python 库的路径设置 PYTHON_LIBRARY 环境变量。 …
几个月前,我读到了Apple 的这篇文章,发现在 iOS 13 上我们可以直接从“设置”应用程序中选择应用程序的语言。现在,iOS 14 beta 6已安装在测试iPhone上,“首选语言”部分不再存在。该功能是在 iOS 14 中被删除还是 Beta 版的某些错误?这似乎与应用程序是否使用 iOS 14 SDK 构建无关,因为 App Store 中的 Facebook 不会显示该部分。
我有一个应用程序,它有几个窗口定义为窗口组,其结构符合主场景中的应用程序:
WindowGroup("StandingsView") {
StandingsView()
.environmentObject(appServices)
}
.handlesExternalEvents(matching: Set(arrayLiteral: "StandingsView"))
Run Code Online (Sandbox Code Playgroud)
appServices 需要一些时间来配置,所以我不想在启动时自动恢复窗口。我在用户选择有效、服务完全配置并且用户按下“开始”SwiftUI 按钮时创建窗口:
if let standingsURL = URL(string: "raceStratLiteApp://StandingsView") {
NSWorkspace.shared.open(standingsURL)
}
Run Code Online (Sandbox Code Playgroud)
我尝试关闭 appDelegate 的 applicationShouldTerminate() 中的窗口。我还尝试在 applicationShouldTerminate 中将 isRestorable 设置为 false:
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
for window in NSApplication.shared.windows {
window.isRestorable = false
}
return .terminateNow
}
Run Code Online (Sandbox Code Playgroud)
还有其他方法不恢复窗口吗?或者更好的是,能够以编程方式将其恢复为之前的大小等,但仅在用户指示“启动”时启动
TIA
是否可以Regex使用可变(非固定)组件创建可重用的 Swift 5.8+ 模式?如果是,怎么办?
从概念上讲,考虑将关键字变量用作正则表达式的一部分的用例。这类似于String类型中的插值。
func example(keyword: String) {\n // non-functional concept shorthand\n var regex = /\xe2\x80\xa6\\(keyword)\xe2\x80\xa6/\n // do something with regex \n}\nRun Code Online (Sandbox Code Playgroud)\n正则表达式文字很可能/\xe2\x80\xa6/没有支持这种方法的语法。\\(\xe2\x80\xa6) String并且,插值语法与正则表达式捕获语法的相似性可能存在问题(\xe2\x80\xa6)。
相反,可以以某种方式使用几种较新的(非NSRegularExpression)正则表达式定义方法中的任何一种来支持可变子String组件吗?
我正在努力弄清楚如何使用 Fluent 将两个表连接在一起。本质上我想运行这个 SQL 命令:
SELECT p.name, o.amount, o.amount * p.amount total
FROM "OrderPoints" o
INNER JOIN "Points" p ON o.points_id = p.id
WHERE order_id = 10831
Run Code Online (Sandbox Code Playgroud)
我的两个模型设置如下:
final class OrderPoint: Codable, PostgreSQLModel, Content, Migration {
var id: Int? = nil
var orderID: Order.ID
var pointID: Point.ID
var amount: Double = 0
var point: Parent<OrderPoint, Point> {
return parent(\.pointID)
}
}
final class Point: Codable, PostgreSQLModel, Content, Migration {
var id: Int? = nil
var name: String
var abbrev: String …Run Code Online (Sandbox Code Playgroud) 我需要什么样的数据模型来解码这种 json 日期格式?
\n示例 json:
\n{\n createdAt: "2021-01-30T22:48:00.469Z",\n updatedAt: "2021-01-30T22:48:00.490Z"\n}\nRun Code Online (Sandbox Code Playgroud)\n我尝试使用此模型,但不断收到解码错误\xe2\x80\xa6
\nstruct Date: Decodable {\n var createdAt: Date\n var updatedAt: Date \n}\nRun Code Online (Sandbox Code Playgroud)\n 我正在尝试使用SQLite设置Vapor 3项目。
在configure.swift文件中,我具有与sqlite相关的以下设置:
try services.register(FluentSQLiteProvider())
...
// Get the root directory of the project
// I have verified that the file is present at this path
let path = DirectoryConfig.detect().workDir + "db_name.db"
let sqlite: SQLiteDatabase
do {
sqlite = try SQLiteDatabase(storage: .file(path: path))
print("connected") // called
} catch {
print(error) // not called
return
}
var databases = DatabasesConfig()
databases.add(database: sqlite, as: .sqlite)
services.register(databases)
Run Code Online (Sandbox Code Playgroud)
在数据库中,有一个名为的表posts,我想查询以下表并返回所有条目:
这是Post实现内部/来源/应用/型号/:
final class Post: Content {
var …Run Code Online (Sandbox Code Playgroud) 我尝试将我们的代码部署到暂存阶段,但我发现了类似这样的错误消息。
压缩的应用程序大于45MB。您的应用程序为69 MB。哎呀!您的请求存在一些问题。蒸气应用程序的公共资产可能不超过300。很小 ?????这不够。
谢谢