我刚刚转换为Beta 3,以前使用的SwiftUI代码现在正在呈现纯黑屏幕。Beta 3是否发生了变化,从而导致了此问题?有解决方案吗?
场景委托代码:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
// Use a UIHostingController as window root view controller
let window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController …Run Code Online (Sandbox Code Playgroud) 我们的应用程序支持iOS 11及更高版本。在iOS 13中,我们使用SwiftUI+Combine
我们用相应的check 或包裹导入SwiftUI或Combine框架。如果我们在iOS 12下从Xcode 11运行我们的应用程序,则会出现错误#if canImport(SwiftUI)#if canImport(Combine)dyld: Library not loaded: /System/Library/Frameworks/Combine.framework/Combine
我们通过可选地链接来解决SwiftUI的相同问题。
但是我们无法为Combine设置相同的名称,因为甚至无法选择它进行链接
Xcode11 Beta的“框架,库和嵌入式内容”部分中有3个新选项可用于添加库。Xcode库部分屏幕截图
谁能解释他们的工作?
从版本11开始,每当我在目标设置(选项卡“常规”)中输入“版本”或“构建”值时,Xcode就会将我的CFBundleVersion值设置为,$(CURRENT_PROJECT_VERSION)并将我CFBundleShortVersionString的值$(MARKETING_VERSION)设置为。
我输入的实际版本和构建值现在存储在project.pbxproj文件中。我不希望或不喜欢这种行为,因为我在构建时使用shell脚本来修改值。
我可以在Info.plist文件中手动设置正确的值,但是一旦在目标设置中更改了版本号或内部版本号,Xcode就会再次更改Info.plist文件。
如何停止Xcode 11执行此操作?
当我修改构建脚本以更改项目文件本身时,Xcode将在更改项目文件后立即取消构建。
我有一个用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 AM印度标准时间
2019-10-18 10:34:39.920697 + 0530 MapLocation [1697:57778]纬度:-23.0206,经度:-72.5052
2019-10-18 10:34:39.925441 + 0530 MapLocation [1697:57778]输入--------(纬度:-23.0206,经度:-72.5052),半径:-300.00
2019-10-18 10:34:39.925546 + 0530 MapLocation …
在 UIKit 中,您可以执行以下操作:
UIView.animate(withDuration: TimeInterval, animations: {
//animation
}) { (Bool) in
//code which will be executed after the animation
}
Run Code Online (Sandbox Code Playgroud)
SwiftUI 中有没有类似的东西,或者你能想到一个替代品吗?
在我之前的框架中,我有一个 localizable.strings 文件,其中包含一些用于本地化的全局条目。在左边的车道上,Xcode 中有一个“本地化”按钮来执行此操作。
如何使用 Swift Package Manager 执行此操作?
以下代码获取键盘显示时的键盘高度,并按键盘高度移动按钮。
此移动在转换源 (ContentView) 和转换目标 (SecibdContentView) 处以相同方式执行,但按钮在转换目标处不移动。
如何使按钮在多个屏幕上移动相同?
import SwiftUI
struct ContentView: View {
@ObservedObject private var keyboard = KeyboardResponder()
var body: some View {
NavigationView {
VStack {
Text("ContentView")
Spacer()
NavigationLink(destination: SecondContentView()) {
Text("Next")
}
.offset(x: 0, y: -keyboard.currentHeight)
}
}
}
}
import SwiftUI
struct SecondContentView: View {
@ObservedObject private var keyboard = KeyboardResponder()
var body: some View {
VStack {
Text("SubContentView")
Spacer()
NavigationLink(destination: ThirdContentView()) {
Text("Next")
}
.offset(x: 0, y: -keyboard.currentHeight)
}
}
}
class KeyboardResponder: ObservableObject { …Run Code Online (Sandbox Code Playgroud) 我开始使用集成了 SPM 的新 Xcode 11。
我在我的项目中添加了第一个依赖项:
但检测到文件未提取到我的项目文件夹中,而是提取到 Xcode 的缓存中:
我想将我所有的依赖文件提交到我的主项目存储库中,所以我的问题是:
是否可以使用 Xcode 11 通过 SPM 更改获取的包的位置?
我刚刚在我的新 MacBook 上安装了 Xcode。Swift iOS 的新起始模板需要 iOS SDK 13+(即它们需要 UISceneDelegate 或 SwiftUI)。有没有办法使用与 iOS 12 兼容的内置模板创建新应用程序?