# Claude Code ile Swift ve iOS Geliştirme Rehberi

Adres: https://agentvera.dev/blog/claude-code-ile-swift/ · Yayın: 2026-11-01

Claude Code’u SwiftUI, UIKit, SPM ve XCTest projelerinde nasıl kullanacağınızı öğrenin: CLAUDE.md kurulumu, çalışma döngüsü, testler ve paralel ajanlar.

**Kısaca:**

- Claude Code, CLAUDE.md ile Swift/iOS proje bağlamını okuyup xcodebuild ve swift test komutları üzerinden doğrulama yapar.
- Küçük adımlarla planlayıp her değişiklikten sonra test çalıştırmak SwiftUI/UIKit projelerinde güvenli döngü sağlar.
- AgentVera, birden fazla Claude Code ajanını ayrı git worktree’lerde paralel çalıştırıp otomatik kod incelemesi yapabilir.

Swift ve iOS projelerinde [Claude Code](/ajanlar/claude-code/)'u proje klasöründe `claude` komutuyla başlatıp Xcode, Swift Package Manager ve XCTest işlerini yürütebilirsiniz. Ajan, kök dizindeki CLAUDE.md dosyasını okuyarak build, test ve lint komutlarınızı bilir; SwiftUI ve UIKit kodunuza göre çalışır. Bu rehberde kurulumdan paralel ajan kullanımına kadar pratik bir akış paylaşıyorum.

## Swift ve iOS işlerine neden uygun

Claude Code, bir Swift/iOS deposunda terminal üzerinden çalışabildiği için Xcode’un komut satırı araçlarını doğrudan kullanır. `xcodebuild`, `swift test`, `swift package` ve simülatör komutlarıyla build alabilir, test çalıştırabilir, bağımlılıkları çözebilir. Swift dilinin async/await, actor ve @MainActor gibi eşzamanlılık özelliklerini anlar; bu sayede ağ katmanı veya ViewModel refactor’larında doğru izolasyon önerileri verir. SwiftUI’nin deklaratif yapısında yeni view’lar eklemek, UIKit’te constraint ve stack view kurmak gibi rutin işlerde hız kazandırır. Ayrıca Swift Package Manager ile modüler yapı kurmak, test hedefleri eklemek ve bağımlılıkları yönetmek için ideal bir arayüz sunar; ajan Package.swift’i okuyup tutarlı değişiklikler yapabilir. Öte yandan Xcode’un görsel arayüzünü açamaz; imzalama, storyboard/xib ve karmaşık proje ayarları için sizden net talimat bekler.

## Projeyi ajan için hazırlama ve CLAUDE.md

Ajanın en büyük bağlam kaynağı CLAUDE.md dosyasıdır. Repo köküne bu dosyayı ekleyin; build, test, lint komutlarını, klasör düzenini ve Swift/iOS’e özel kuralları yazın. Böylece ajan her seferinde hangi şemayı, hangi simülatörü ve hangi kuralları kullanacağını bilir. Gerçekçi bir örnek:

```markdown
# CLAUDE.md

## Komutlar
- Bağımlılıklar: `swift package resolve`
- Build: `xcodebuild -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' build`
- Test: `xcodebuild test -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' -only-testing:MyAppTests`
- Lint: `swiftlint`

## Klasör yapısı
- `MyApp/` uygulama kaynakları
- `MyAppTests/` birim testleri
- `MyAppUITests/` UI testleri
- `Packages/` altında SPM paketleri

## Kurallar
- UIKit ve SwiftUI karışımında ağır işler arka planda çalışsın; UI güncellemeleri @MainActor üzerinde olsun
- Hata yönetiminde Result yerine throws kullanın
- ViewModel'ler @Observable veya ObservableObject kullanmalı; test edilebilir olmalı
- Debug için print bırakmayın; Logger kullanın
```

Bu kurallar ajanın ürettiği kodun mevcut mimariyle uyumlu olmasını sağlar. Komutları gerçek projenizdeki şema ve simülatör adlarıyla değiştirin; simülatör adını `xcrun simctl list devices available` ile teyit edebilirsiniz. CLAUDE.md dosyasını kısa tutun; tüm dökümantasyonu içine dökmek yerine yalnızca ajanın karar verirken ihtiyaç duyacağı komutları ve kuralları ekleyin.

## Çalışma döngüsü: plan, küçük adımlar, testler, diff

Claude Code ile güvenli çalışmanın anahtarı, ajanı serbest bırakmadan önce plan istemektir. Önce hangi dosyaların değişeceğini, hangi testlerin etkileneceğini ve olası riskleri listeleyin; [Claude Code plan modu](/blog/claude-code-plan-modu/) yaklaşımı burada işe yarar. Ardından tek bir görevi küçük adımlara bölün; her adımdan sonra ajanın `xcodebuild` veya `swift test` çalıştırmasını isteyin. Değişiklikleri `git diff` ile gözden geçirin; ajanın yaptığı refactor’un kapsamını anlamadan merge etmeyin.

Tipik Swift/iOS görevleri için örnek istekler:

- Mevcut UIKit ekranındaki ağ çağrısını async/await ile refactor et; completion handler’ları kaldır, hata yönetimini throws ile yap. Değişiklikleri yapmadan önce etkilenecek dosyaları listele.
- SwiftUI listesinde görselleri async yükleyen bir ViewModel oluştur; @MainActor kullan, servis bağımlılığını protokol olarak enjekte et ve birim testlerini ekle.
- XCTest’te şu test başarısız: [hata mesajı]. Hatayı analiz et ve en küçük düzeltmeyi uygula; mevcut diğer testleri bozma.
- SPM paketine yeni bir hedef ekle ve uygulama hedefine bağla; Package.swift ve gerekli proje dosyalarını güncelle, ardından `swift test` çalıştır.
- UI testi için erişilebilirlik tanımlayıcıları ekle; her buton, liste hücresi ve metin alanına `accessibilityIdentifier` ver. Sadece tanımlayıcı ekle, davranışı değiştirme.

Bu istekleri uygularken ajanın her adımda hangi dosyayı neden değiştirdiğini açıklamasını isteyin. `git diff` çıktısını okuyun; özellikle UIKit constraint değişikliklerinde görsel hiyerarşi bozulmamış mı, @MainActor izolasyonu korunmuş mu kontrol edin. Son adımı siz onaylamadan ajanın bir sonraki göreve geçmesine izin vermeyin.

## İyi olduğu işler ve dikkat edilecekler

Claude Code özellikle tekrarlayan ve test edilebilir işlerde iyidir. Aşağıdaki tablo tipik görevler ile dikkat edilmesi gereken Swift/iOS detaylarını özetler.

| Görev | Claude Code iyi yapar | Dikkat edilecekler |
|---|---|---|
| Async/await dönüşümü | Completion handler kaldırma, throws ekleme | @MainActor eksikse arayüz güncellemeleri arka plana düşebilir |
| SwiftUI view/ViewModel | @Observable, bindings, liste yapıları | Önizleme verileri ve environment object’ler test için ayrılmalı |
| UIKit Auto Layout | NSLayoutConstraint ve stack view üretimi | Çakışan constraint’ler, safe area ve trait koleksiyonları |
| SPM entegrasyonu | Package.swift hedef ve bağımlılık ekleme | Xcode projesiyle senkron; kilit dosyası değişiklikleri |
| XCTest ekleme/onarma | Test yazma, async test, expectation | UI testleri yavaş ve kırılgan; sadece kritik akışlar |

En büyük risklerden biri eşzamanlılık: ajan @MainActor veya Sendable uyarılarını göz ardı ederse, Swift 6 strict concurrency modunda derleme hataları oluşabilir. Bu nedenle CLAUDE.md’de thread kurallarını netleştirin. Storyboard ve xib dosyaları XML olarak kırılgandır; ajan bu dosyaları düzenlerken diff’i dikkatle inceleyin, mümkünse yeni ekranları SwiftUI veya kod tabanlı UIKit ile yazmasını isteyin. Proje dosyası `project.pbxproj` değişiklikleri de risklidir; ajan hedef eklerken Xcode’un beklediği UUID düzenini bozabilir. Bu tür yapısal değişiklikleri ajan yerine Xcode’da yapıp Swift dosyalarını ajana bırakmak daha güvenlidir. Lokalizasyon dosyaları (.strings) ve asset katalogları eklemek ajan için kolaydır; ancak string anahtarlarının unique olması ve format argümanlarının doğru sıralanması gerekir. Özellikle çoğul kurallar için stringsdict dosyası üzerinde yapılan değişiklikleri test edin.

## Test ve doğrulama

Her değişiklikten sonra testleri çalıştırmak, ajanla Swift/iOS geliştirmenin en kritik adımıdır. SPM paketlerinde `swift test` yeterlidir; Xcode projesinde ise belirli şema ve simülatörle `xcodebuild test` çalıştırın. Örneğin:

```bash
xcodebuild test -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' -only-testing:MyAppTests
```

Ajanın yalnızca hataları değil, test çıktısındaki uyarıları da yorumlamasını isteyin. UI testleri için `XCTWaiter` ve explicit bekleme kullanın; sabit `sleep` eklemesine izin vermeyin. Kod kapsamını görmek isterseniz `xcodebuild test -enableCodeCoverage YES` ardından `xcrun xccov view --report` komutlarını çalıştırabilirsiniz. Ajan, hangi testlerin ekleneceğini de önerebilir; ancak testleri gözden geçirmeden kabul etmeyin, özellikle asenkron testlerde beklentilerin süresi ve iptal edilme durumları yanlış olabilir. Xcode test planları kullanıyorsanız, ajanın test planını değiştirmesine izin vermeden önce hangi konfigürasyonların kapsandığını kontrol edin. Paralel testlerde simülatör klonlama ve test hedefi izolasyonu ajanın önerdiği komutlardan bağımsız olarak doğrulanmalıdır. Ajan yalnızca test çalıştırmakla kalmaz, başarısız assertion’lardan yola çıkarak üretim kodunu düzeltebilir; ancak düzeltmenin testi geçirmek için testi zayıflatmadığından emin olun.

## Birden fazla ajanı AgentVera ile paralel çalıştırma

Swift/iOS projenizde birden fazla Claude Code ajanını paralel çalıştırmak isterseniz [AgentVera](/blog/agentvera-nasil-kullanilir/) masaüstü uygulaması her ajanı kendi gerçek terminal panelinde çalıştırır. Ajanlar ayrı git worktree’lerde ilerleyebildiği için aynı Xcode projesini bozmadan [paralel özellik geliştirebilirsiniz](/blog/birden-fazla-claude-code-ajani/). Ajan bitince ikinci bir model otomatik kod incelemesi yapar ve bulgular `file:line` olarak bağlanır; bu, SwiftUI/UIKit değişikliklerinde gözden kaçan @MainActor veya constraint hatalarını yakalar. Her turun anlık görüntüsü checkpoint olarak tutulur; bir değişikliği tek tıkla geri alabilirsiniz.

## Özet

Claude Code, Swift ve iOS projelerinde terminal tabanlı doğrulamayı merkeze alarak hız kazandırır. CLAUDE.md ile bağlamı doğru kurun, küçük adımlarla planlı ilerleyin, her değişiklikte testleri çalıştırın ve diff’i inceleyin. Birden fazla ajan gerektiğinde AgentVera ile ayrı worktree’lerde paralel çalışarak riski dağıtabilirsiniz.

## Sık sorulanlar

**Claude Code Swift ve iOS projelerinde nasıl çalışır?** Claude Code terminalde claude komutuyla başlatılır ve proje kökündeki CLAUDE.md dosyasını okuyarak Xcode, Swift Package Manager ve XCTest komutlarını kullanır. Kaynak dosyalarını düzenler, test çalıştırır ve sonuçları yorumlar; Xcode arayüzünü açmaz.

**CLAUDE.md dosyasına Swift/iOS için neler yazmalıyım?** Build, test ve lint komutlarını, hedef şema ve simülatör bilgisini, klasör yapısını ve kod kurallarını yazın. Örneğin xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' ve swift test komutları ajanın doğrulama yapmasını sağlar.

**Claude Code ile Xcode testleri nasıl çalıştırılır?** Ajana xcodebuild test veya SPM paketleri için swift test komutunu çalıştırmasını söyleyebilirsiniz. Belirli test sınıfları için -only-testing bayrağı kullanılabilir; ajan çıktıyı okuyup hataları düzeltebilir.

**Claude Code SwiftUI ve UIKit kodunu aynı anda yönetebilir mi?** Evet, her iki çerçevede de kod yazabilir, refactor yapabilir. Ancak UIKit Auto Layout ve SwiftUI state yönetimi arasında geçişlerde @MainActor ve thread güvenliği kurallarını CLAUDE.md’de netleştirmek gerekir.

---

**AgentVera hakkında.** AgentVera, Solviera Teknoloji tarafından geliştirilen macOS, Windows ve Linux masaüstü uygulamasıdır. 18 yapay zeka kodlama ajanını (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) proje bazında, gerçek terminallerde ve kullanıcının kendi CLI kurulum ve girişleriyle yan yana çalıştırır. Ücretsiz planda sınırsız ajan vardır. İndir: https://agentvera.dev/indir/ · Fiyatlar: https://agentvera.dev/fiyatlar/
