From 8ad112cb1f06677cc232aacc2a709ae2392afd66 Mon Sep 17 00:00:00 2001 From: Ata Etgi Date: Fri, 22 May 2026 13:06:18 +0300 Subject: [PATCH] fix(target): treat dependencies and buildPhases as optional keys Xcode 16.2+ omits the 'dependencies' key from project.pbxproj when a target has no dependencies (instead of writing 'dependencies = ();'). This causes parseTarget() to fail with a KeyNotFoundError. Apply the same IsKeyNotFoundError guard already used for 'productType' and 'productReference'. Also guard 'buildPhases' for forward compat. Fixes #330 --- xcodeproject/xcodeproj/target.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/xcodeproject/xcodeproj/target.go b/xcodeproject/xcodeproj/target.go index 4b34e9ef..2e844400 100644 --- a/xcodeproject/xcodeproj/target.go +++ b/xcodeproject/xcodeproj/target.go @@ -129,7 +129,10 @@ func parseTarget(id string, objects serialized.Object) (Target, error) { dependencyIDs, err := rawTarget.StringSlice("dependencies") if err != nil { - return Target{}, err + if !serialized.IsKeyNotFoundError(err) { + return Target{}, err + } + dependencyIDs = []string{} } var dependencies []TargetDependency @@ -168,7 +171,10 @@ func parseTarget(id string, objects serialized.Object) (Target, error) { buildPhaseIDs, err := rawTarget.StringSlice("buildPhases") if err != nil { - return Target{}, err + if !serialized.IsKeyNotFoundError(err) { + return Target{}, err + } + buildPhaseIDs = []string{} } return Target{