Anyone know how to set Side By Side Comparison in the new commit UI? New UI seems to missing a lot of features like multi-select of files to discard/stage...
Dive into the vast array of tools, services, and support available to developers.
Post
Replies
Boosts
Views
Activity
I'm not sure if I'm changed an unknown-to-me setting somewhere, but since this morning, after profiling an app (metal, allocations, etc), every project I run/build on Xcode 15b3, either on simulator or on device, displays partially-alpha images blended to black, as if there was some problem in the process of compiling the PNGs (lack of premultiplying, color space, etc).
If I open those same projects on Xcode 14, they are displayed everything as they should.
Also, If I open them on other computers with Xcode 15b3 other than mine, it also works fine. And it was working fine for me this morning as well, but not anymore.
I've tried uninstalling Xcode beta and the simulator a few times, cleaning folders and preferences, hoping it was some setting I changed by mistake with some hotkey, but no luck so far.
I'll attach two pictures, one from Xcode 14, and the other one from Xcode 15b3, hoping it's some silly thing I'm missing.
xc15b3:
xc14:
Hello,
In WidgetKit, I have to write multiple #Preview macros for each family the widget supports. So is there any better way to write the #Preview?
(Although I can use the legacy PreviewProvider but it does not support timeline to test transition animation.)
#import WidgetKit
#import SwiftUI
struct DailyCaffeineWidget: Widget {
...
}
@available(iOS 17.0, *)
#Preview("Inline", as: .accessoryInline) {
DailyCaffeineWidget()
} timelineProvider: {
previewTimelineProvider()
}
@available(iOS 17.0, *)
#Preview("Circular", as: .accessoryCircular) {
DailyCaffeineWidget()
} timelineProvider: {
previewTimelineProvider()
}
@available(iOS 17.0, *)
#Preview("Rectangular", as: .accessoryRectangular) {
DailyCaffeineWidget()
} timelineProvider: {
previewTimelineProvider()
}
@available(iOS 17.0, *)
#Preview("Small", as: .systemSmall) {
DailyCaffeineWidget()
} timelineProvider: {
previewTimelineProvider()
}
@available(iOS 17.0, *)
#Preview("Medium", as: .systemMedium) {
DailyCaffeineWidget()
} timelineProvider: {
previewTimelineProvider()
}
...
Xcode 14 introduced some ridiculous Info.plist management bugs which are not yet fixed in Xcode 15:
The bugs are manifested in the General and Info tabs of target management:
-The Build value in the General tab is not in sync with the CFBundleVersion value in the Info tab (that is, changing the value in the General tab won't affect the Info tab and vice versa).
-The App Category value in the General tab isn't in sync with the LSApplicationCategoryType value in the Info tab.
-Additional document type properties in the Info tab cannot be added: clicking "Click here to add..." doesn't do anything.
-Document types in Info tab cannot be deleted: once you added a document type instance (even as a test) there's no way to remove it.
I'm new to Apple development and decided to learn using SwiftData and Xcode 15 beta 4 (though I'm starting to think I don't need that extra challenge). I've worked through many issues--with you all's help--but this is one I can't figure out and hasn't shown up in my searches.
I'm working on the traditional task list app (with a Task model). I've tried several approaches to app structure, but each time I eventually hit this same error. It doesn't happen when I set up the new Xcode project, but eventually it does. I've cleaned the build folder, restarted the Simulator, and even rebooted the Macbook I'm working on.
Here's what happens when I click Product > Run:
the app builds successfully
the Simulator displays a white screen as expected
then the error appears.
Here are the error messages:
In the debug area it says:
SwiftData/ModelContainer.swift:159: Fatal error: failed to find a currently active container for Task
Failed to find any currently loaded container for Task)
and in the warning in the editor says Thread 1: Fatal error: failed to find a currently active container for Task
The debugger is highlighting this line in the call stack (not sure if that's useful as a newbie):
#7 0x0000000100bb6d90 in Task.init(id:title:priority:) at /var/folders/3v/q8g4z9bx4lb9z6t7mhgwgghw0000gn/T/swift-generated-sources/@__swiftmacro_10BadgerTool4Task5ModelfMm_.swift:2
Here's the code:
The Task model isn't complex:
// Task.swift
import Foundation
import SwiftData
@Model
class Task {
@Attribute(.unique) var id: UUID
var title: String
var priority: String
init(id: UUID = UUID(), title: String, priority: String = "None") {
self.id = id
self.title = title
self.priority = priority
}
}
I have the model container set in the context of the highest view:
// BadgerToolApp.swift
import SwiftUI
import SwiftData
@main
struct BadgerToolApp: App {
var body: some Scene {
WindowGroup {
NavView()
.modelContainer(for: Task.self)
}
}
}
I tried moving all other views one layer down (which is why the unnecessary NavView is there):
// NavView.swift
import SwiftUI
import SwiftData
struct NavView: View {
@State var selectedCollection: Collection?
@State var selectedTask: Task?
var body: some View {
NavigationSplitView(
sidebar: {
SideBarView(selectedCollection: $selectedCollection, selectedTask: $selectedTask)
},
content: {
ContentListView(selectedCollection: $selectedCollection, selectedTask: $selectedTask)
},
detail: {
TaskDetailView(selectedCollection: $selectedCollection, selectedTask: $selectedTask)
}
)
}
}
Trying to isolate my mistake
I removed everything else related to SwiftData (except for the imports) and gave my views hard-coded data for the simulator like this:
// SideBarView.swift
import SwiftUI
import SwiftData
struct SideBarView: View {
@Binding var selectedCollection: Collection?
@Binding var selectedTask: Task?
let collections = presetCollections //temp data
var body: some View {
List(collections, id: \.id, selection: $selectedCollection){ collection in
NavigationLink(collection.name, value: collection)
}
List{
Text("All Tasks")
Text("Settings")
}
.navigationTitle("Collections")
}
}
Everything works as expected if
I comment out the .modelContainer() modifier on the call to NavView view
I change the Task definition from the @Model class to a regular struct like this:
// Task.swift
// with @Model removed
import Foundation
struct Task: Hashable {
var id: UUID
var title: String
var priority: String
init(id: UUID = UUID(), title: String, priority: String = "None") {
self.id = id
self.title = title
self.priority = priority
}
}
What am I missing?
Could it be a bug?
Thanks for your help!
I've always thought that it just didn't work for me, because there was no feedback.
Users can upvote their own posts, yet they don't by default upon posting them. Reddit, for comparison, continues to allow users to remove their own-post upvotes, but upvotes them for the user by default. Other forums like Stack Overflow disallow own-post upvoting.
This forum has the worst of both worlds, for users can gain an algorithmic advantage by upvoting their own. It might seem like a minor issue, because it is. But it's an issue in my eyes regardless.
Hi Apple IT Developer Team,
In what format should the GetToken response be returned?
The session explains "The JSON Web Token should be signed by the MDM server's private key.", but it seems vague to me.
A sample response would be appreciated.
Xcode is throwing an error when attempting to report test coverage after running unit tests.
Showing All Messages
Failed to merge raw profiles in directory /{my project dir}/DerivedData/{my project name}/Build/ProfileData/A98EC493-3AB4-4B1C-B7FC-BC5D77B23EE3 to destination /{my project dir}/DerivedData/{my project name}/Build/ProfileData/A98EC493-3AB4-4B1C-B7FC-BC5D77B23EE3/Coverage.profdata: Aggregation tool '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-profdata' failed with exit code 1: warning: /{my project dir}/DerivedData/{my project name}/Build/ProfileData/A98EC493-3AB4-4B1C-B7FC-BC5D77B23EE3/997F01E3-3735-4897-AE00-31EBB0A9E8D3-57885.profraw: invalid instrumentation profile data (file header is corrupt)
error: no profile can be merged
Anyone else seeing this issue?
None of my existing apps (both in-AppStore and in-development) nor even a brand new WatchOS app can be installed to my Apple Watch. While using Xcode to build and deploy to my Watch, I get this:
”Waiting to reconnect to Apple Watch
Xcode will continue when the operation completes.”
However, this dialog persists and never completes.
I’m running all of the latest: MacOS 14 beta 4, Xcode 15 beta 5, Watch OS 10 beta 4, iOS 17 beta 4.
I’ve tried resetting my Watch (with “Erase All” option) and restarting the Mac, the phone and the watch.
Any help?
It seems that Xcode Cloud currently only uses Intel machines for running the workflow jobs.
When will Apple Silicon machines be available and supported?
I regularly see questions from folks who’ve run into problems with their third-party IDE on macOS. Specifically, the issue is that their IDE is invoking Apple’s command-line tools — things like clang and ld — and that’s failing in some way. This post collects my ideas on how to investigate, and potentially resolve, issues like this.
If you have any questions or comments, please put them in a new thread here on DevForums. Tag it appropriately so that I see it. Good tags include Compiler, Linker, LLVM, and Command Line Tools.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Investigating Third-Party IDE Integration Problems
Many third-party IDEs rely on Apple tools. For example, the IDE might run clang to compile C code or run ld to link object files. These IDEs typically don’t include the tools themselves. Rather, they rely on you to install Xcode or Apple’s Command Line Tools package. These are available at Apple > Developer > Downloads
Occasionally I see folks having problems with this. They most typically report that basic stuff, like compiling a simple C program, fails with some mysterious error. If you’re having such a problem, follow the steps below to investigate it.
IMPORTANT Some IDEs come with their own tools for compiling and linking. Such IDEs are not the focus of this post. If you have problems with an IDE like that, contact its vendor.
Select Your Tools
macOS has a concept of the current command-line tools. This can either point to the tools within Xcode or to an installed Command Line Tools package. To see which tools are currently selected, run xcode-select with the --print-path argument. This is what you’ll see if you have Xcode installed in the Applications folder:
% xcode-select --print-path
/Applications/Xcode.app/Contents/Developer
Note All of the tools I discuss here are documented in man pages. If you’re not familiar with those, see Reading UNIX Manual Pages.
And this is what you’ll see with a Command Line Tools package selected.
% xcode-select --print-path
/Library/Developer/CommandLineTools
There are two common problems with this:
It points to something you’ve deleted.
It points to something unexpected.
Run the command above to see the current state. If necessary, change the state using the --switch option. For example:
% xcode-select --print-path
/Applications/Xcode.app/Contents/Developer
% clang -v
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
…
% sudo xcode-select --switch ~/XcodeZone/Xcode-beta.app
% clang -v
Apple clang version 15.0.0 (clang-1500.0.38.1)
…
I have Xcode 14.3 in the Applications folder and thus clang runs Clang 14.0.3. I have Xcode 15.0b5 in ~/XcodeZone, so switching to that yields Clang 15.0.0.
It’s possible to run one specific command with different tools. See Select Your Tools Temporarily, below.
Run a Simple Test
A good diagnostic test is to use the selected command-line tools to compile a trivial test program. Consider this C [1] example:
% cat hello.c
#include <stdio.h>
int main(int argc, char ** argv) {
printf("Hello Cruel World!\n");
return 0;
}
% clang -o hello hello.c
% ./hello
Hello Cruel World!
IMPORTANT If possible, run this from Terminal rather than, say, over SSH.
You may need to expand this test program to exercise your specific case. For example, if your program is hitting an error when it tries to import the Core Foundation framework, add that import to your test program:
% cat hello.c
#include <stdio.h>
#include <CoreFoundation/CoreFoundation.h>
int main(int argc, char ** argv) {
printf("Hello Cruel World!\n");
return 0;
}
When you compile your test program, you might see one of these results:
Your test program compiles.
Your test program fails with a similar error.
Your test program fails with a different error.
I’ll explore each case in turn.
[1] For a C++ example, see C++ Issues, below.
If your test program compiles…
If your test program compiles from the shell, that proves that your basic command-line tools setup is fine. If the same program fails to compile in your IDE, there’s something IDE-specific going on here. I can’t help you with that. I recommend that you escalate the issue via the support channel for your IDE.
If your test program fails with a similar error…
If your test program fails with an error similar to the one you’re seeing in your IDE, there are two possibilities:
There’s a bug in your test program’s code.
There’s an environmental issue that’s affecting your command-line tools setup.
Don’t rule out the first possibility. I regularly see folks bump into problems like this, where it turns out to be a bug in their code. For a specific example, see C++ Issues, below.
Assuming, however, that your test program’s code is OK, it’s time to investigate environmental issues. See Vary Your Environment, below.
If your test program fails with a different error…
If your test program fails with a different error, look at the test program’s code to confirm that it’s correct, and that it accurately reflects the code you’re trying to run in your IDE.
Vary Your Environment
If your test program fails with the same error as you’re seeing in your IDE, and you are sure that the code is correct, it’s time to look for environmental factors. I typically do this with the steps described in the next sections, which are listed from most to least complex.
These steps only tell you where things are going wrong, not what is going wrong. However, that’s often enough to continue the investigation of your issue.
Vary Your Shell
Try running your commands in a different shell. macOS’s default shell is zsh. Try running your commands in bash instead:
% bash
…
bash-3.2$ clang -o hello hello.c
bash-3.2$ ./hello
Hello Cruel World!
Or if you’ve switched your shell to bash, try it in zsh.
Vary Your User Account
Some problems are caused by settings tied to your user account. To investigate whether that’s an issue here:
Use System Settings > Users & Groups to create a new user.
Log in as that user.
Run your test again.
Vary Your Mac
Some problems are system wide, so you need to test on a different Mac. The easiest way to do that is to set up a virtual machine (VM) and run your test there. Or, if you have a separate physical Mac, run your test on that.
Vary Your Site
If you’re working for an organisation, they may have installed software on your Mac that causes problems. If you have a Mac at home, try running your test there.
It’s also possible that your network is causing problems [1]. If you have a laptop, try taking it to a different location to see if that changes things.
[1] I rarely see this when building a simple test program, but it do see it with other stuff, like code signing.
C++ Issues
If you’re using C++, here’s a simple test you can try:
% cat hello.cpp
#include <iostream>
int main()
{
std::cout << "Hello Cruel World!\n";
}
% clang++ -o hello hello.cpp
% ./hello
Hello Cruel World!
A classic problem with C++ relates to name mangling. Consider this example:
% cat hello.c
#include <stdio.h>
#include "hello-core.h"
int main(int argc, char ** argv) {
HCSayHello();
return 0;
}
% cat hello-core.cpp
#include "hello-core.h"
#include <iostream>
extern void HCSayHello() {
std::cout << "Hello Cruel World!\n";
}
% cat hello-core.h
extern void HCSayHello();
% clang -c hello.c
% clang++ -c hello-core.cpp
% clang++ -o hello hello.o hello-core.o
Undefined symbols for architecture x86_64:
"_HCSayHello", referenced from:
_main in hello.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
The issue here is that C++ generates a mangled name for HCSayHello:
% nm hello-core.o | grep HCSayHello
0000000000000000 T __Z10HCSayHellov
whereas C uses the non-mangled name:
% nm hello.o | grep HCSayHello
U _HCSayHello
The fix is an appropriate application of extern "C":
% cat hello-core.h
extern "C" {
extern void HCSayHello();
};
Select Your Tools Temporarily
Sometimes you want to temporarily run a command from a particular tools package. To continue my earlier example, I currently have Xcode 14.3 installed in the Applications folder and Xcode 15.0b5 in ~/XcodeZone. Xcode 14.3 is the default but I can override that with the DEVELOPER_DIR environment variable:
% clang -v
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
…
% DEVELOPER_DIR=~/XcodeZone/Xcode-beta.app/Contents/Developer clang -v
Apple clang version 15.0.0 (clang-1500.0.38.1)
…
Revision History
2025-01-27 Remove the full width characters. These were a workaround for a forums platform bug that’s since been fixed. Made other minor editorial changes.
2023-07-31 First posted.
Hi!
I've been dealing with mergeable libraries quite some time. However I can't achieve the following scenario:
I have 2 xcframeworks A and B that are merged as part of a third xcframework called C. And my app needs to import something from A and B.
As per the documentation we have to remove the references from A and B from the final app and replace it with C. If I work on the same xcodepoj it works like a charm (maybe because of caches), but if I try to compile C as a separate XCFramework and distribute it as a packed library, the app is not able to resolve the symbols to A and B classes.
This C xcframework is compiled with BUILD_LIBRARY_FOR_DISTRIBUTION se to true and if I check its swiftinterface files it is not declaring the symbols from A and B. However the size of the binary seems to have A and B.
Is there any way to export A and B symbols as part of C's swiftinterface? If I add @_exported, it is forcing me to declare the import of A and B wherever I use them and therefore I'm going to have duplicated symbols
Thanks!
I downloaded Xcode 15 beta 5 and I'm trying to work on my app, but it's having a problem with the simulator. It can't find the runtime I guess. This is the first time I've ran into this.
When I try to run, this is what I get:
The com.apple.CoreSimulator.SimRuntime.iOS-17-0 simulator runtime is not available.
runtime profile not found using "System" match policy Download the com.apple.CoreSimulator.SimRuntime.iOS-17-0 simulator runtime from the Xcode Settings.
Not sure what to do here. I also installed the latest iOS 17 developer beta on my device and Xcode doesn't work with that either. I can't help but think the development team forgot something here.
In Xcode 15 beta 6, building any Mac Catalyst project will encounter the following Linker warning.
ld: warning: building for 'macCatalyst', but linking in dylib (/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa.tbd) built for 'macOS'
We use Storyboards and custom fonts in our app. Once we started developing new features for iOS 17 and did the first build in Xcode 15, we've noticed that in quite a few places incorrect fonts are set to views. In some places it is incorrect weight, while in other it's completely different font.
Some observations:
Fonts may change the next time app is build. E.g., instead of SF Pro Display Semibold we got SF Pro Display Heavy, and then after few relaunches it switched to Nunito Bold 😵💫
We’ve ensured that correct font is set in Storyboard, and even tried to re-assign it. That didn’t help.
All custom fonts are properly added to a target and are registered in info.plist
All custom fonts are listed in UIFont.familyNames, so they are indeed registered with the system.
Wrong fonts are loaded on both development environment and in TestFlight builds
We’ve never experienced anything similar before Xcode 15
What we've tried:
Re-assigning fonts in Storyboard.
Creating new Storyboard in Xcode 15 and copying screens into it.
I wonder if anybody else having similar issues and maybe knows the workaround.
Thank you.
P.S. I've filed a Feedback to Apple: FB12903371
I am using SwiftData for my model. Until Xcode 15 beta 4 I did not have issues. Since beta 5 I am receiving the following red warning multiple times:
'NSKeyedUnarchiveFromData' should not be used to for un-archiving and will be removed in a future release
This seems to be a CoreData warning. However, I am not using CoreData directly. I have no way to change the config of CoreData as used by SwiftData.
My model just uses UUID, Int, String, Double, some of them as optionals or Arrays. I only use one attribute (.unique).
Hi !
We are super exited to switch to Xcode 15 when it will be released, but we have a major issue :
Apps built with Xcode 15 beta fail to show DeviceActivityReport base view on iOS 16.
The following message shows in the console :
] [default] LaunchServices: store (null) or url (null) was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler}
2023-07-31 14:54:12.568332+0200 Opal[57940:4651501] [default] Attempt to map database failed: permission was denied. This attempt will not be retried.
2023-07-31 14:54:12.568420+0200 Opal[57940:4651501] [db] Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler}
We Opened a bug report at the end of june but got no answer from Apple (FB12416769). It's 100% reproductible with a very simple sample project
If you guys could report the issue as well, it would be nice !
Xcode Cloud always exports archive using ad-hoc, development and app-store profiles. This uses up 5-6 more minutes always for my app. How to disable and allow export only in single distribution profile
Is it possible to reset the device list without paying the Apple Tax? I recently let my developer account lapse due to financial issues but it gets to me that I cant write and run apps I wrote on the phone I own. Now I cant even test them on it because I cant reset the device list. Is there any solution?