Questions tagged «swift»

Swift是Apple Inc.针对其平台和Linux开发的一种安全,快速且具有表现力的通用编程语言。Swift是开源的。仅将标记用于有关语言功能或在Swift中需要代码的问题。将标签[ios],[ipados],[macos],[watch-os],[tvos],[cocoa-touch]和[cocoa]用于有关平台或框架的(语言不可知)问题。

6
SwiftUI-如何避免将导航硬编码到视图中?
我尝试为更大的,可投入生产的SwiftUI App做架构。我一直在遇到一个相同的问题,这表明SwiftUI的一个主要设计缺陷。 仍然没有人能给我完整的工作,生产就绪的答案。 如何在SwiftUI其中包含导航的可重用视图? 由于SwiftUI NavigationLink牢固地绑定在视图上,因此根本不可能在较大的Apps中进行缩放。NavigationLink是的,在这些小样本应用程序中可以工作-是的,但是当您要在一个应用程序中重用许多视图时就不会立即使用。并且可能还会在模块边界上重用。(例如:在iOS,WatchOS等中重用View) 设计问题:NavigationLinks硬编码到视图中。 NavigationLink(destination: MyCustomView(item: item)) 但是,如果包含此视图的视图NavigationLink应该可重用,则无法对目的地进行硬编码。必须有一种提供目的地的机制。我在这里问这个问题,得到了很好的答案,但仍然没有完整的答案: SwiftUI MVVM协调器/路由器/ NavigationLink 想法是将目标链接注入到可重用视图中。通常,此想法可行,但不幸的是,这并不适合实际的Production Apps。一旦有了多个可重复使用的屏幕,我就会遇到一个逻辑问题,即一个可重复使用的视图(ViewA)需要一个预先配置的视图目标(ViewB)。但是,如果ViewB还需要预配置的视图目标该ViewC怎么办?我需要建立ViewB在这样的方式已经ViewC被注入已经ViewB在我注入ViewB到ViewA。依此类推....但是由于当时必须传递的数据不可用,整个构造失败了。 我的另一个想法是使用Environmentas依赖项注入机制为注入目标NavigationLink。但是我认为,这或多或少应被视为一种骇客行为,而不是针对大型应用程序的可扩展解决方案。我们最终将基本上将环境用于所有内容。但是因为Environment也只能在View内部使用(不能在单独的Coordinators或ViewModels中使用),所以我认为这将再次创建奇怪的构造。 就像业务逻辑(例如,视图模型代码)和视图一样,导航和视图也必须分开(例如,协调器模式)。UIKit这是有可能的,因为我们可以访问视图UIViewController并UINavigationController在视图后方进行访问。UIKit'sMVC已经存在一个问题,即它混和了许多概念,因此变成了有趣的名称“ Massive-View-Controller”而不是“ Model-View-Controller”。现在,类似的问题仍在继续,SwiftUI但在我看来甚至更糟。导航和视图是紧密耦合的,不能分离。因此,如果包含导航,则无法进行可重用的视图。可以解决这个问题,UIKit但是现在我看不到一个理智的解决方案SwiftUI。不幸的是,Apple没有向我们提供如何解决类似架构问题的解释。我们只有一些小示例应用程序。 我希望证明自己是错误的。请给我展示一个干净的App设计模式,该模式可以解决大量生产就绪的Apps的问题。 提前致谢。 更新:悬赏活动将在几分钟后结束,很遗憾,仍然没有人能够提供有效的示例。但是,如果找不到其他解决方案并将其链接到此处,我将开始提供新的赏金来解决此问题。感谢大家的巨大贡献!

6
运行iOS应用会导致框架“代码签名无效”的运行时错误
每次我尝试运行此应用程序时,它都会生成OK,然后安装,但是一旦运行,该应用程序就会中断并打印此错误消息。XCode 11和iOS 13。 dyld: Library not loaded: @rpath/StandardCyborgFusion.framework/StandardCyborgFusion Referenced from: /private/var/containers/Bundle/Application/2292CCF2-800F-4E28-AF10-A1B98081DD0A/StandardCyborgExample.app/StandardCyborgExample Reason: no suitable image found. Did find: /private/var/containers/Bundle/Application/2292CCF2-800F-4E28-AF10-A1B98081DD0A/StandardCyborgExample.app/Frameworks/StandardCyborgFusion.framework/StandardCyborgFusion: code signature invalid for '/private/var/containers/Bundle/Application/2292CCF2-800F-4E28-AF10-A1B98081DD0A/StandardCyborgExample.app/Frameworks/StandardCyborgFusion.framework/StandardCyborgFusion' 我在这里和App Developer论坛上都看到过许多类似的帖子,但都没有一个解释或有效的解决方法。我试过了 清洁和建筑 重新启动XCode 重新启动Mac 完全重置钥匙串 验证所有钥匙串证书信任设置都在“使用系统默认值”上 恢复出厂设置我的Mac 更新1: 我的iOS设备似乎有问题。该应用程序可以在模拟器上启动,但是该模拟器不能满足我的开发目的,因此我需要在设备上进行这项工作。我最近将iPhone XR更新为iOS 13.3.1。 更新2: 发现另一个小组似乎也有相同的问题https://github.com/flutter/flutter/issues/49504。
32 ios  swift  macos  keychain  dyld 

4
编译器错误:无效的库文件-CoreLocation
我有一个用Xcode 8创建的应用程序。我在该应用程序中使用了CoreLocation和MapKit。 我有最新的应用程序更新iOS到现在。而且工作正常。现在,我正在使用更新应用程序iOS 1。所以我打开了应用程序Xcode 11.0并更新了所有必需的代码。还更新了Xcode“执行更改”等建议的设置。 现在,我运行应用程序,但出现如下错误: Compiler error: Invalid library file。 我已经搜索了很多,但是找不到任何解决方案。这是新的Xcode还是新的错误iOS? 我需要做一些额外的更改或设置吗?请指导我。这是Apple已知的错误吗? 编辑: 2019-10-18 10:34:39.899827 + 0530 MapLocation [1697:57778]编译器错误:无效的库文件2019-10-18 10:34:39.900098 + 0530 MapLocation [1697:57778]编译器错误:无效的库文件2019- 10-18 10:34:39.915973 + 0530 MapLocation [1697:57778]编译器错误:无效的库文件2019-10-18 10:34:39.916228 + 0530 MapLocation [1697:57778]编译器错误:无效的库文件 2019-10-18 10:34:39.920608 + 0530 MapLocation [1697:57778]更新的坐标为:<+ 23.02055700,+ 72.50524900> +/- 5.00m(速度-1.00 mps /路线-1.00)@ 10/18/19 ,10:34:39 …

5
多个工作表(isPresented :)在SwiftUI中不起作用
我的ContentView具有两个不同的模式视图,因此我都使用sheet(isPresented:)了这两种视图,但似乎只显示了最后一个。我该如何解决这个问题?还是无法在SwiftUI的视图上使用多个图纸? struct ContentView: View { @State private var firstIsPresented = false @State private var secondIsPresented = false var body: some View { NavigationView { VStack(spacing: 20) { Button("First modal view") { self.firstIsPresented.toggle() } Button ("Second modal view") { self.secondIsPresented.toggle() } } .navigationBarTitle(Text("Multiple modal view problem"), displayMode: .inline) .sheet(isPresented: $firstIsPresented) { …

1
Xcode启动图像源
我有一个非常愚蠢的问题,我的xcode项目没有设置Launch Image Source,我已经将启动画面图像添加到Images.xcassets-> LaunchImage,但是在我的项目目标General- > App Icon和Launch Images中没有没有启动图像源的设置

1
Xcode 11.4循环引用错误
在Xcode 11.4上编译项目时(在以前的Xcode项目上构建良好),我得到以下999多个错误(未清理生成并删除了派生数据): <unknown>:0: error: circular reference <unknown>:0: error: circular reference <unknown>:0: note: through reference here <unknown>:0: error: circular reference <unknown>:0: error: circular reference <unknown>:0: note: through reference here <unknown>:0: note: through reference here <unknown>:0: error: circular reference <unknown>:0: note: through reference here <unknown>:0: error: circular reference <unknown>:0: error: circular reference …
20 ios  swift  xcode 

4
等同于在Swift Combine中使用@Published的计算属性?
在命令式Swift中,通常使用计算属性在不复制状态的情况下提供对数据的便捷访问。 假设我将此类用于命令式MVC: class ImperativeUserManager { private(set) var currentUser: User? { didSet { if oldValue != currentUser { NotificationCenter.default.post(name: NSNotification.Name("userStateDidChange"), object: nil) // Observers that receive this notification might then check either currentUser or userIsLoggedIn for the latest state } } } var userIsLoggedIn: Bool { currentUser != nil } // …


2
签名嵌入式框架在Xcode 11.2.1中不起作用
我有一个小型的概念验证应用程序,我试图在其中将一个框架(Alamofire)嵌入(并签名)到我的框架(AequumPOCFramework.framework)中,但是,当我尝试将其部署到设备上时,它会不断我的错误 ....不适用于使用库验证的过程:映射文件没有cdhash,完全未签名?代码必须至少是临时签名的。 如果我只是尝试部署自己的框架而没有嵌入Alamofire,则一切正常。 部署到我的iPhone时的完整错误是: dyld:未加载库:@ rpath / Alamofire.framework / Alamofire引用自:/private/var/containers/Bundle/Application/EDB697EB-EA15-4301-B4B6-A8FE1F0212BE/PocIOS.app/Frameworks/AequumPOCFramework.framework/AequumPOCFramework原因:找不到合适的图像。确实找到了:/private/var/containers/Bundle/Application/EDB697EB-EA15-4301-B4B6-A8FE1F0212BE/PocIOS.app/Frameworks/AequumPOCFramework.framework/Frameworks/Alamofire.framework/Alamofire:代码签名在(/ private / var /containers/Bundle/Application/EDB697EB-EA15-4301-B4B6-A8FE1F0212BE/PocIOS.app/Frameworks/AequumPOCFramework.framework/Frameworks/Alamofire.framework/Alamofire)在使用库验证的过程中无效:映射的文件没有cdhash ,完全未签名?代码必须至少是临时签名的。 我究竟做错了什么?
18 ios  swift  xcode  frameworks  sign 

3
如何告诉SwiftUI视图绑定到嵌套的ObservableObjects
我有一个SwiftUI视图,其中包含一个名为的EnvironmentObject appModel。然后读取值appModel.submodel.count在其body方法中。我希望这会将我的观点绑定到该属性count上,submodel以便在属性更新时重新呈现该属性,但这似乎不会发生。 这是一个错误吗?如果不是,将视图绑定到SwiftUI中环境对象的嵌套属性的惯用方式是什么? 具体来说,我的模型看起来像这样... class Submodel: ObservableObject { @Published var count = 0 } class AppModel: ObservableObject { @Published var submodel: Submodel = Submodel() } 我的观点看起来像这样... struct ContentView: View { @EnvironmentObject var appModel: AppModel var body: some View { Text("Count: \(appModel.submodel.count)") .onTapGesture { self.appModel.submodel.count += 1 } } } 当我运行该应用并点击标签时, …
18 ios  swift  swiftui  combine 

5
如何在IOS13中找到此字体相关的coretext警告的来源?
在更新我的应用程序时,我注意到在IOS13上的Xcode 11.2中运行该应用程序时,我在日志中收到大量警告。 CoreText注意:客户端请求的名称为“ .SFUI-Regular”,它将获得TimesNewRomanPSMT而不是预期的字体。所有系统UI字体访问均应通过适当的API进行,例如CTFontCreateUIFontForLanguage()或+ [UIFont systemFontOfSize:]。 我挖了一下,发现了WWDC的这句话: 正如在许多WWDC会话中提到的那样,不要直接使用点前缀的字体名称。 我本人几乎只使用IB和笔尖为文本字段等设置字体,并且我的代码中均未引用“ SFUI-Regular”,因此我不确定如何找到这些警告的实际原因(我有在日志中大约有20-30行)。 是否有人对我如何找到警告的来源以及如何解决它有任何提示?

3
在iOS 13上默认显示系统Emoji键盘
解 这是针对此问题的完整解决方案/解决方法,也请投票Blld的答案,因为这是所需的重要信息! 辅助搜索的替代标题 将Emoji键盘默认显示为UIKeyInput对象(在iOS 13中) 强制iOS 13显示表情符号键盘 将UITextInputMode.primaryLanguage表情符号设置为 以编程方式将键盘设置为表情符号 此前ios13返回UITextInputMode与primaryLanguage那等于“表情符号”将默认为显示表情符号键盘(见下图)。 返回“表情符号”的示例代码UITextInputMode。 // // ViewController.swift // Keyboard Info // // Created by Richard Stelling on 30/09/2019. // Copyright © 2019 Richard Stelling. All rights reserved. // import UIKit class TestButton: UIButton, UIKeyInput { var hasText: Bool = true func insertText(_ text: …
17 ios  swift  keyboard  uikit  emoji 

3
SwiftUI-如何将EnvironmentObject传递到视图模型中?
我正在寻找创建一个可以由视图模型(而不仅仅是视图)访问的EnvironmentObject。 Environment对象跟踪应用程序会话数据,例如,loginIn,访问令牌等,该数据将传递到视图模型(或需要的服务类)中,以允许调用API来传递来自此EnvironmentObjects的数据。 我试图将会话对象从视图传递给视图模型类的初始化程序,但出现错误。 如何使用SwiftUI将EnvironmentObject访问/传递到视图模型? 请参阅测试项目的链接:https : //gofile.io/?c=vgHLVx
16 ios  swift  mvvm  swiftui 

2
SwiftUI视图内容布局意外弹出/跳转出现?
当导航到具有表单或列表(分组)的新视图时,内容从导航视图标题的底部向下出现大约四分之一,然后大约半秒钟后“弹出”到正确的位置。非常难看。不知道这是SwiftUI错误还是结构错误? 我已经在模拟器和设备上对此进行了测试,结果相同。 我是否认为这与导航链接的处理方式有关?当ContentView出现时,每个导航链接都会在其目标视图上调用init()。对我而言,这没有任何意义,仅在用户实际单击导航链接时才应调用目标init()吗? 我也尝试过使用工作表进行工作,并且仅当使用具有链接样式或列表形式的列表的导航链接时,工作表才存在问题。 来自全新的单视图应用程序的代码: struct ContentView: View { var body: some View { NavigationView { NavigationLink(destination: TestView()) { Text("Test Link") } .navigationBarTitle("Content View") } } } struct TestView: View { var body: some View { Form { Text("Test View") } .navigationBarTitle("Test View") } }
16 ios  swift  swiftui 

1
在SwiftUI中将核心数据实体保存在弹出窗口中会抛出nilError,而不会再次将.environment传递给SubView
SwiftUI和Core Data的“玩法”使我陷入一个奇怪的问题。因此,情况如下: 我有一个主视图“ AppView”和一个名为“ SubView”的子视图。如果我单击NavigationTitleBar中的加号按钮(即弹出窗口或工作表),将从AppView视图中打开SubView视图。 @Environment(\.managedObjectContext) var managedObjectContext @State private var modal: Bool = false ... Button(action: { self.modal.toggle() }) { Image(systemName: "plus") }.popover(isPresented: self.$modal){ SubView() } SubView视图的形式有点小,带有两个TextField对象,用于添加一个姓氏和一个姓氏。这两个对象的输入由两个单独的@State属性处理。此表单中的第三个对象是简单按钮,该按钮应将前名和姓氏保存到附加的CoreData客户实体中。 ... @Environment(\.managedObjectContext) var managedObjectContext ... Button(action: { let customerItem = Customer(context: self.managedObjectContext) customerItem.foreName = self.forename customerItem.surname = self.surname do { try self.managedObjectContext.save() …
15 ios  swift  core-data  swiftui 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.