小编l -*_*c l的帖子

如何从 OSX Swift 命令行工具或 shebang 脚本文件显示窗口?

如何从 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)

macos shebang swift

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

如何在 Swift 中使用 UnsafeMutablePointer<OpaquePointer> ?

如何UnsafeMutablePointer<OpaquePointer>在 Swift 中使用 Core Foundation 框架?为什么有一个UnsafeMutablePointer<OpaquePointer>

\n\n

给定,一般:UnsafeMutablePointer<SomeType>某处typealias SomeType = OpaquePointer

\n\n

具体API示例

\n\n
// SOURCE: import ApplicationServices.PrintCore\ntypealias PMPrinter = OpaquePointer\nfunc PMSessionGetCurrentPrinter(_ printSession: PMPrintSession, _ currentPrinter: UnsafeMutablePointer<PMPrinter>)\nfunc PMPrinterGetPaperList(PMPrinter, UnsafeMutablePointer<Unmanaged<CFArray>?>)\n
Run Code Online (Sandbox Code Playgroud)\n\n

具体示例用例:获取打印机支持的纸张列表

\n\n
let printInfo = NSPrintInfo.shared()\nlet printSession = PMPrintSession(printInfo.pmPrintSession())\nvar currentPrinterOptional: PMPrinter? = nil\nPMSessionGetCurrentPrinter(printSession, &currentPrinterOptional!)\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)

macos swift

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

Vapor项目没有使用Swift 4和Xcode 9构建/运行

我安装了最新版本的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)

swift vapor

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

在 generate-xcodeproj 之后,哪些步骤可以将 SPM 生成的 Xcode 项目静态链接为另一个 Xcode 项目中的子项目?

动机:能够生成一个基于 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) 包:

  1. 静态库:TinkerEvalStaticLib? swift package init --type library作为起点。
  2. 命令行可执行文件:TinkerEvalStaticCli? swift package …

xcode swift swift-package-manager

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

由于 dlopen 返回 nil,PythonKit 在启动时崩溃

我正在尝试在我的 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 环境变量。 …

python swift swift-pythonkit

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

每个应用程序的语言设置是 iOS 13 独有的功能吗?

几个月前,我读到了Apple 的这篇文章,发现在 iOS 13 上我们可以直接从“设置”应用程序中选择应用程序的语言。现在,iOS 14 beta 6已安装在测试iPhone上,“首选语言”部分不再存在。该功能是在 iOS 14 中被删除还是 Beta 版的某些错误?这似乎与应用程序是否使用 iOS 14 SDK 构建无关,因为 App Store 中的 Facebook 不会显示该部分。

settings localization ios ios13 ios14

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

如何限制 macOS 窗口管理恢复特定窗口?

我有一个应用程序,它有几个窗口定义为窗口组,其结构符合主场景中的应用程序:

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

macos nswindowrestoration swiftui swiftui-windowgroup

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

带有变量(不固定)字符串子组件的 Swift Regex

是否可以Regex使用可变(非固定)组件创建可重用的 Swift 5.8+ 模式?如果是,怎么办?

\n

从概念上讲,考虑将关键字变量用作正则表达式的一部分的用例。这类似于String类型中的插值。

\n
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}\n
Run Code Online (Sandbox Code Playgroud)\n

正则表达式文字很可能/\xe2\x80\xa6/没有支持这种方法的语法。\\(\xe2\x80\xa6) String并且,插值语法与正则表达式捕获语法的相似性可能存在问题(\xe2\x80\xa6)

\n

相反,可以以某种方式使用几种较新的(非NSRegularExpression)正则表达式定义方法中的任何一种来支持可变子String组件吗?

\n

regex swift

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

在 Vapor 应用程序中使用 Fluent 进行连接

我正在努力弄清楚如何使用 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)

vapor vapor-fluent

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

如何将日期 JSON 解码为 Swift 模型?

我需要什么样的数据模型来解码这种 json 日期格式?

\n

示例 json:

\n
{\n    createdAt: "2021-01-30T22:48:00.469Z",\n    updatedAt: "2021-01-30T22:48:00.490Z"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试使用此模型,但不断收到解码错误\xe2\x80\xa6

\n
struct Date: Decodable {\n    var createdAt: Date\n    var updatedAt: Date   \n}\n
Run Code Online (Sandbox Code Playgroud)\n

json date decoding ios swift

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

蒸气连接到SQLite数据库

我正在尝试使用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)

sqlite swift vapor vapor-fluent

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

蒸气-如何增加用于部署到暂存和生产的文件夹的大小?

我尝试将我们的代码部署到暂存阶段,但我发现了类似这样的错误消息。

压缩的应用程序大于45MB。您的应用程序为69 MB。哎呀!您的请求存在一些问题。蒸气应用程序的公共资产可能不超过300。很小 ?????这不够。

谢谢

laravel forge server

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