所以我不小心修改了一个标题(CBCentralManager.h)并在我构建时导致上面的错误显示.我搜索了堆栈溢出的解决方案,并发现了这一点.即使在删除派生数据后,我仍然得到相同的错误.我也试过删除ModuleCache/FUW5IOHP9BIS文件夹但没有成功.
这是我看到的具体错误:
file /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/CoreBluetooth.framework/Headers/CBCentralManager.h' has been modified since the precompiled header '/var/folders/pj/hslm53_51xxd_npfqym5r6z00000gn/C/com.apple.DeveloperTools/5.0-5A1412/Xcode/5.0-5A1412/Xcode/ModuleCache/FUW5IOHP9BIS/CoreBluetooth.pcm was built
任何帮助是极大的赞赏.
在objective-c中,我们可以声明变量,如 - NSString *a,*b,*c;
在swift中有一种方法可以声明相同的数据类型多变量变量而不是像下面那样
var a: NSString = ""
var b: NSString = ""
var c: NSString = ""
Run Code Online (Sandbox Code Playgroud)
那么,是否可以将所有a,b,c变量声明为一行
var (a,b,c): a:NSstring=("","","")或类似的东西?
如何在Xcode 7中的代码覆盖率期间排除一些方法或说AppDelegate文件?
我没有使用Gcov.
我最近将一堆框架转换为使用 Swift 包管理器。我Package.swift看起来像这样:
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "MDFToolbox",
platforms: [
.macOS(.v10_13), .iOS(.v12), .tvOS(.v12), .watchOS(.v3)
],
products: [
.library(name: "MDFToolbox", targets: ["MDFToolbox"])
],
dependencies: [
.package(url: "git@github.com:Swinject/Swinject.git", from: "2.7.0"),
],
targets: [
.target(name: "MDFToolbox", dependencies: ["Swinject"]),
]
)
Run Code Online (Sandbox Code Playgroud)
由于该库曾经是一个框架,我想将它作为动态库 ( .dylib)链接到我的应用程序中。根据 Package 文档中的库产品定义,如果我愿意,我可以指定type我的库.dynamic:
用于确定如何链接到库的库的可选类型。不指定此参数以让 Swift 包管理器在静态或动态链接之间进行选择(推荐)。如果您不支持这两种链接类型,请为此参数使用 .static 或 .dynamic。
如果我将它保留为nil,当我在我的应用程序项目中链接这个包时,Xcode 默认构建一个静态库,这不是我想要的。
如果我.dynamic在库的 Package.swift中将类型设置为,Xcode 会构建一个.dylib,但它不会嵌入到应用程序中,从而导致链接器错误:
dyld: Library not loaded: @rpath/libMDFToolbox.dylib
Referenced from: /Users/mpdifran/Library/Developer/Xcode/DerivedData/Remind-eewbkbjpfrqbdwchjrbmrtxzsjew/Build/Products/Debug-maccatalyst/Remind.app/Contents/MacOS/Remind
Reason: …Run Code Online (Sandbox Code Playgroud) 我试图在多平台项目中从Kotlin调用Swift / Objective-C代码。调用平台代码没有问题。但是,当我尝试调用某个库(或框架,因为我不是iOS开发人员而不确定如何正确调用它)时,它将失败。Docs指出,如果正确导出,可以调用Objective-C代码和Swift:
Kotlin / Native提供与Objective-C的双向互操作性。如果正确导入到构建中,则可以在Kotlin代码中使用Objective-C框架和库(默认情况下会导入系统框架)。请参阅Gradle插件文档中的“使用cinterop”。如果Swift库的API已通过@objc导出到Objective-C,则可以在Kotlin代码中使用它。尚不支持Pure Swift模块。
但这并没有说明如何正确导入它们。它仅指向gradle插件描述,该描述描述了gradle插件的旧版本。因此它对我不起作用。最后,我发现了某种可能是导入Objective-C代码的方式:
fromPreset(presets.iosX64, 'ios') {
compilations.main.outputKinds('FRAMEWORK')
compilations.main {
cinterops {
firebase {
def pods = '${System.getProperty("user.home")}/Projects/kmpp/iosApp/Pods/'
includeDirs '${pods}Firebase/CoreOnly/Sources',
'${pods}FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
生成运行不会失败,但是不会导入任何内容。我究竟做错了什么?是否可以完全导入这样的库?
UPD:
在这里,我找到了一个使用cinterop工具示例,如下所示:
cd samples/gitchurn
../../dist/bin/cinterop -def src/main/c_interop/libgit2.def \
-compilerOpts -I/usr/local/include -o libgit2
Run Code Online (Sandbox Code Playgroud)
看来cinterop工具应该/dist/bin/在我的项目的文件夹中,但是没有这样的文件夹。我在哪里可以获得cinterop工具?
我意识到有两种方法来设置回放队列(使用查询或MPMediaItems的集合),但是一旦完成,有没有办法在MPMusicPlayerController上访问队列而不必自己保留它?
如果它在控制器上公开,我想避免自己维护队列的麻烦.到目前为止,我可以访问的是当前播放的项目.我也可以获取当前正在播放的项目的索引,但如果没有队列,这将是无用的.(我觉得奇怪的是他们给你和索引,但没有队列).
我一直收到一个错误,说我的CBPeripheralManager没有开机,但在我的代码中,我觉得我实现了这一点.这是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// Start up the CBPeripheralManager
_peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];
// Start up the CBCentralManager
// And somewhere to store the incoming data
_data = [[NSMutableData alloc] init];
}
/** Required protocol method. A full app should take care of all the possible states,
* but we're just waiting for to know when the CBPeripheralManager is ready
*/
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager …Run Code Online (Sandbox Code Playgroud) Xcode 11.0 测试版 5 (11M382q)
当我的视图控制器之一是顶视图控制器时,我使用新的外观 API 为栏按钮项的颜色着色。我正在使用以下代码来执行此操作:
let appearance = UINavigationBarAppearance()
let attributes: [NSAttributedString.Key : Any] = [.foregroundColor : tintColor]
appearance.largeTitleTextAttributes = attributes
appearance.buttonAppearance.normal.titleTextAttributes = attributes
appearance.doneButtonAppearance.normal.titleTextAttributes = attributes
navigationItem.standardAppearance = appearance
Run Code Online (Sandbox Code Playgroud)
这似乎适用于基于文本的栏按钮项目,但基于图像的栏按钮项目保持应用程序的默认色调。这是 iOS 13 测试版中的错误吗?我已经记录了一个雷达,但只是想看看其他人是否遇到过这种情况或找到了解决方法。
正如您在下面看到的,后退箭头和加号按钮的颜色不正确。
我有一个问题将我的 NSManagedObjectContext 暴露给 SwiftUI 的环境。这是我的代码:
extension SceneDelegate: UIWindowSceneDelegate {
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = scene as? UIWindowScene else { return }
let window = UIWindow(windowScene: windowScene)
let context = PersistentContainer.shared.viewContext
let rootView = TabBarView().environment(\.managedObjectContext, context)
window.rootViewController = UIHostingController(rootView: rootView)
self.window = window
window.makeKeyAndVisible()
}
}
class PersistentContainer: NSPersistentContainer {
static let shared = PersistentContainer()
private convenience init() {
self.init(name: "App")
viewContext.mergePolicy = NSMergePolicy(merge: .mergeByPropertyStoreTrumpMergePolicyType)
viewContext.automaticallyMergesChangesFromParent = true
loadPersistentStores { description, …Run Code Online (Sandbox Code Playgroud)