小编mra*_*hay的帖子

如何允许在 SwiftUI 中的文本标签上选择文本?

当我创建文本视图时:

文本(“你好世界”)

我不能让用户在长按时选择文本。

我看过使用 TextField 但这似乎不允许关闭文本编辑。

我只是希望能够显示文本正文并允许用户使用系统文本选择器突出显示选择。

谢谢!

text ios swift swiftui

32
推荐指数
3
解决办法
7513
查看次数

如何判断 Apple 的 Vision 框架中哪些语言可用于文本识别?

我正在尝试向我的应用程序添加该选项,以在使用 Apple 的 Vision 框架识别文本时允许使用不同的语言。

似乎有一个功能,用于编程返回所支持的语言,但我不知道如果我正确地调用它,因为我只得到“EN-US”这回我相当 肯定不是唯一支持的语言?

这是我目前拥有的:

// current revision number of Vision
let revision = VNRecognizeTextRequest.currentRevision
var possibleLanguages: Array<String> = []

do {
    possibleLanguages = try VNRecognizeTextRequest.supportedRecognitionLanguages(for: .accurate, 
                                                                            revision: revision)
} catch {
    print("Error getting the supported languages.")
}

print("Possible languages for revision \(revision):\n(possibleLanguages.joined(separator: "\n"))")
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,谢谢。

machine-learning augmented-reality swift apple-vision coreml

7
推荐指数
2
解决办法
2285
查看次数

获取 iCloud Drive 文件夹中尚未下载的文件的名称

I\xe2\x80\x99m 尝试获取 iCloud Drive 目录中所有文件和文件夹的名称:

\n\n
import Foundation\n\nlet fileManager = FileManager.default\nlet directoryURL = URL(string: "folderPathHere")!\n\ndo {\n    let directoryContents = try fileManager.contentsOfDirectory(at: directoryURL, includingPropertiesForKeys: nil, options: [.skipsSubdirectoryDescendants, .skipsHiddenFiles])\n    for url in directoryContents {\n        let fileName = fileManager.displayName(atPath: url.absoluteString)\n        print(fileName)\n    }\n} catch let error {\n    let directoryName = fileManager.displayName(atPath: directoryURL.absoluteString)\n    print("Couldnt get contents of \\(directoryName): \\(error.localizedDescription)")\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

似乎任何尚未下载到设备的 iCloud 文件都不会返回 URL。

\n\n

我知道当我已经知道带有下面代码的路径时,我可以检查路径是否包含普遍存在的项目(即使它没有下载\xe2\x80\x99t):

\n\n
fileManager.isUbiquitousItem(at: writePath)\n
Run Code Online (Sandbox Code Playgroud)\n\n

有没有办法在不先下载的情况下获取这些 iCloud 文件的 URL 和名称?

\n\n

目录 URL 是一个安全范围的 URL,由书签数据构造而成,以防产生任何差异(为清楚起见,此处省略了该代码)。

\n\n

谢谢

\n

nsfilemanager ios icloud swift icloud-drive

6
推荐指数
1
解决办法
1150
查看次数

如何在Siri Intent Extension中使用NSUseractivity打开SwiftUI应用并执行功能?

我的问题

我的应用程序使用Intents Extensions创建了自己的快捷方式操作。他们完美地执行了后台操作。

对于某些操作,我试图使intent扩展在“快捷方式”中运行并执行功能时打开主(容器)应用程序。

我在使用NSUserActivity时遇到了麻烦,我不确定这是一个SwiftUI项目,还是我实现它的方式(或两者兼而有之)。

我尝试过的

我已经在我的info.plist(“ com.me.project.activityName”)中将NSUserActivity名称注册为NSUserActivityType。

我已将以下代码添加到我的AppDelegate中。

我在意图扩展内初始化了一个新的NSUserActivity,其类型与在info.plist中声明的类型相同。

我也尝试过在应用程序中声明活动(我认为我不需要这样做吗?)

我正在运行:iOS(iPhone XS,Beta 6)macOS 10.15 Catalina(Beta 5)Xcode 11.0(Beta 5)

到目前为止我的代码

我的AppDelegate中有这个:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

          if userActivity.activityType == "com.me.project.activityName" {
              if let url = URL(string: "https://www.google.com") {
                  UIApplication.shared.open(url)
              }
              return true
          }
          return false
      }
Run Code Online (Sandbox Code Playgroud)

这是我的意图扩展内:

let openApp = intent.launchApp?.boolValue ?? false
        if openApp {

            let UA = NSUserActivity(activityType: "com.me.project.activityName")
            UA.title = "Dummy title"

            completion(UserActivityTestIntentResponse(code: .continueInApp, userActivity: UA))

        } …
Run Code Online (Sandbox Code Playgroud)

ios siri swift sirishortcuts swiftui

5
推荐指数
2
解决办法
517
查看次数

当我的核心数据存储已从后台扩展更新时,如何刷新我的 SwiftUI 视图?

我有一个带有意图扩展目标的 SwiftUI 应用程序。我还有一个位于共享应用程序组的核心数据存储。

Intents 扩展可以使用newBackgroundContext()Shortcuts 应用程序成功地将数据写入商店。我的 SwiftUI 应用程序可以从应用程序组中读取数据,viewContext但只有当我强制退出应用程序并重新打开它时。

我想我需要一种方法来让我的应用程序知道它已在不同的上下文中更新,但我不确定该怎么做?

我试过context.automaticallyMergesChangesFromParent = true在应用程序委托中设置并在 SwiftUI 视图中添加context.refreshAllObjects()onAppear但这似乎没有任何区别。

mergeChanges(fromContextDidSave:)似乎很有希望,但我不确定如何获取通知。

我是 Core Data 的新手并且很困惑,所以任何指向正确方向的指针都会很棒,谢谢!

这是我当前代码的消毒版本:

应用委托

 lazy var persistentContainer: NSCustomPersistentContainer = {
        let container = NSCustomPersistentContainer(name: "exampleContainerName")
        container.loadPersistentStores { description, error in
            if let error = error {
                print("error loading persistent core data store")
            }
        }
        return container
    }()

    func saveContext () {
        let context = persistentContainer.viewContext
        if context.hasChanges {
            do {
                try context.save() …
Run Code Online (Sandbox Code Playgroud)

core-data swift intents-extension swiftui

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