From 5858b0cc8030e5e62ce9327a3c0ac9105dbe58c3 Mon Sep 17 00:00:00 2001 From: Ant-tree <88021994+Ant-tree@users.noreply.github.com> Date: Wed, 11 Feb 2026 10:04:19 +0900 Subject: [PATCH] Improve sorting of project references Refactor project reference sorting to handle nil values and use display names. --- .../Objects/Project/PBXProjEncoder.swift | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Sources/XcodeProj/Objects/Project/PBXProjEncoder.swift b/Sources/XcodeProj/Objects/Project/PBXProjEncoder.swift index fa8710ffc..218b1b72e 100644 --- a/Sources/XcodeProj/Objects/Project/PBXProjEncoder.swift +++ b/Sources/XcodeProj/Objects/Project/PBXProjEncoder.swift @@ -484,13 +484,16 @@ final class PBXProjEncoder { for project in projects { /// The project references are sorted alphabetically based on the name of the project it's being referenced. project.projectReferences = project.projectReferences.sorted(by: { lhs, rhs in - let lProjectRef = lhs["ProjectRef"]! - let lFile: PBXFileElement = lProjectRef.getObject()! - let rProjectRef = rhs["ProjectRef"]! - let rFile: PBXFileElement = rProjectRef.getObject()! - let lName = lFile.name! - let rName = rFile.name! - return lName.compare(rName, options: .caseInsensitive) == .orderedAscending + guard + let lRef = lhs["ProjectRef"], + let rRef = rhs["ProjectRef"], + let lFile: PBXFileElement = lRef.getObject(), + let rFile: PBXFileElement = rRef.getObject() + else { return false } + + let lDisplay = lFile.name ?? lFile.path ?? "" + let rDisplay = rFile.name ?? rFile.path ?? "" + return lDisplay.localizedCaseInsensitiveCompare(rDisplay) == .orderedAscending }) } }