小编Han*_*ash的帖子

在 Swift String.contains() 函数中使用正则表达式

在 Swift 中,我有一个 String Variable thisString。我想检查以确保字符串仅包含字母、数字和/或破折号 (-)。除了这样做之外:

if ( thisString.contains("$") || thisString.contains("%") ) {
  //reject
} else {
 //accept
}
Run Code Online (Sandbox Code Playgroud)

对于每个不受欢迎的角色,这很荒谬。我想不通。

理论上,我想用正则表达式做这样的事情:

if ( thisString.contains(regex([^a-zA-Z0-9-]) ) { 
  //reject
} else {
  //accept
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

swift

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

删除发布 iOS 应用程序的 iPad 屏幕截图选项

我正在尝试在 App Store 中发布我的应用程序。我的应用程序仅适用于 iOS 移动设备。但当我尝试添加应用程序屏幕截图时,我发现有一个 iPad 选项。

在此输入图像描述

现在,我想删除 App Store Connect 中的 iPad 屏幕截图选项。

我没有找到任何解决方案。

iphone ios app-store-connect

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

在 Xcode 中更改“Info.plist”的位置

在你说这是一个小问题并且在这里和其他论坛上讨论了一百万次之前,我想说我经历了所有这些问题并尝试实施他们的每个解决方案,但没有运气。我要么错过了一些非常小的细节,要么我的项目总体上有问题。希望你能帮忙。

问题: 在我更改“Info.plist”的位置后,我的项目显示黑屏。

或者我收到以下错误:

在此输入图像描述

我已经尝试过的:

  1. 在“目标成员资格”中选中或取消选中带有项目名称的框
  2. 在“目标”-“构建设置”-“Info.plist 文件”中,将位置更改为“个人测验/支持文件/Info.plist”,并尝试了所有其他可能的路径。
  3. 在“目标”-“构建阶段”-“复制捆绑资源”-删除并添加“Info.plist”
  4. 在文件“信息”-“文件检查器”-“位置”更改为“绝对路径”,“相对于组”,“相对于项目”并将所选路径镜像到“构建设置”
  5. 在模拟中-“设备”-“删除所有内容和设置”
  6. “Command + Shift + K”清理项目
  7. 尝试阅读苹果开发人员书籍
  8. 尝试实现一些代码
  9. 尝试了一些我什至不记得的其他操作

结果我要么黑屏,要么出现上述错误。我究竟做错了什么?

xcode ios info-plist

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

如何使用 SwiftUI 将可选函数传递给视图?

我正在尝试在 SwiftUI 中创建一个子视图,可以选择从父视图中获取一个函数,以便我可以在未给出操作的情况下执行逻辑,或者如果给出了操作,则可以在 ChildView 中调用操作。

当我尝试运行我的代码时,我在调用中缺少参数“action”的参数,我无法弄清楚为什么,因为我在 ChildView 中将操作标记为可选,所以如果在父视图?

我在 ChildView 的公共初始值设定项中将操作标记为 @escaping,以满足编译器在单击“修复”后添加 @escaping 的要求,但不知道为什么或是否应该这样做?

如果我不将操作标记为 @escaping,则会收到错误将非转义参数“操作”分配给公共初始值设定项中的 @escaping 闭包。

也许公共初始化程序导致了我的问题,但我需要将其包含在我的案例中,但我认为我错误地初始化了可选函数?

我怎样才能完成我想做的事情?

家长观点

struct ParentView: View {
    var body: some View {
        ChildView() // ERROR: Missing argument for parameter 'action' in call???
    }
}
Run Code Online (Sandbox Code Playgroud)

子视图

struct ChildView: View {
    
    let action: () -> ()?
    // ^ Should not have to be supplied since marked as optional??

    public init(action: @escaping () -> ()? ) {
        self.action …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

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

在 Xcode 14.2 上出现“无法在此设备上安装一个或多个配置文件”的问题

我使用的是 macOS Ventura 13.2.1、iOS 16.1 和 Xcode 14.2。

我已经将证书添加到钥匙串中。当我尝试通过 Xcode 添加配置文件时 -> 窗口 -> 设备和模拟器 -> 右键单击​​连接的设备 -> 显示配置文件 -> 然后选择正确的配置文件。我收到此错误:

“无法在此设备上安装一个或多个配置文件。请确保为此设备配置配置文件。如果没有,请尝试生成新的配置文件'。

我尝试了各种方法,例如重新下载证书和配置文件、将证书重新添加到钥匙串、取消配对和重新配对 iPhone。

xcode ios ios-provisioning

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

SwiftData 搜索栏和谓词

我正在尝试使用带有搜索栏的 SwiftData 框架创建一个视图,用户可以在其中输入飞机的注册信息并动态更新列表。但首先我不确定我是否正确执行(我在网上找不到太多示例)并且收到错误:

通用结构“ForEach”要求“Query<Aircraft, [Aircraft]>”符合“RandomAccessCollection”

struct AirplanePick: View {
    @State var addNewPlane = false
    @Environment (\.modelContext) var mc
 
    @Binding var planePick: Aircraft?
    let dm: DataManager
    @Environment(\.presentationMode) var presentationMode

    @State var searchTerm: String = ""
    
    var filterPlanes : Query<Aircraft, [Aircraft]>{
       
        var predicate: Predicate<Aircraft>?
        
        if !searchTerm.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
            predicate = .init(#Predicate { $0.registration.contains(searchTerm) })
        }
        
        return Query(filter: predicate, sort: \.registration)
    }
    var body: some View {
        
        List {
            Text("planes are \(planes.count)")
            
            ForEach(filterPlanes, id: \.self){ plane in
                             
                
                Button {
                    planePick = plane
                 
                    self.presentationMode.wrappedValue.dismiss() …
Run Code Online (Sandbox Code Playgroud)

predicate swift-data swiftui

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

从异步任务中打印

我正在服务器端尝试 Swift,并遇到了一个问题,我也在最新版本的 Xcode 上看到过这个问题。

当执行异步任务块printdebugPrint在异步任务块内时,不会出现输出:

@main
 18 struct PostgresTest {
 19   static func main() {
 20     print("Test print1")
 21     Task {
 22         print("Test print2")
 23 
 24         await TestPostgres.connectDisconnect()
 25     }
 26   }
 27 }
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,我可以看到终端上出现“Test print1”,但是,第二次打印的输出没有出现。

我究竟做错了什么?

swift

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

“traitCollectionDidChange”在 iOS 17.0 中已弃用。我如何使用替换品?

我正在尝试使用此功能,但它不适用于 iOS 17。\n我想每次在深色和浅色模式之间切换时进行更改。

\n

这是我的功能:

\n
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {\n    super.traitCollectionDidChange(previousTraitCollection)\n\n    // Check if the user interface style has changed\n    if self.traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {\n        // User interface style has changed (light to dark or vice versa)\n        if self.traitCollection.userInterfaceStyle == .light {\n            // Code to execute in light mode\n            print("App switched to light mode")\n        } else {\n            // Code to execute in dark mode\n            print("App switched to dark mode")\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这就是问题所在:

\n
\n

\xe2\x80\x98traitCollectionDidChange\xe2\x80\x99 在 iOS 17.0 …

user-interface uikit ios swift uitraitcollection

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

Xcode 12.4 - 如何使用快捷方式复制行

我试图弄清楚如何使用快捷方式在 Xcode 版本 12.4 中复制一行代码(特别是在 .swift 文件中,当前重复的“cmd + D”快捷方式仅适用于 UIBuilder)。

我在互联网上看到了很多文档,但没有提到最新版本的 Xcode。有人尝试解决这个问题吗?

xcode

0
推荐指数
1
解决办法
1700
查看次数