- Clearly state your task or question at the beginning of your message.
- Provide context and details to help Claude understand your needs.
- Break complex tasks into smaller, manageable steps.
Bad prompt:
| import SwiftUI | |
| import Combine | |
| public struct ChangeObserver<V: Equatable>: ViewModifier { | |
| public init(newValue: V, action: @escaping (V) -> Void) { | |
| self.newValue = newValue | |
| self.newAction = action | |
| } | |
| private typealias Action = (V) -> Void |
If you work on a Swift project that follows the Model-View-ViewModel (MVVM) architecture or similar, you may want to jump to counterpart in Xcode from your view to your model, and then to your view model. (ie. by using Ctrl+Cmd+Up and Ctrl+Cmd+Down).
You can do this in recent versions of Xcode by setting a configuration default.
From a terminal, just type this command and press Enter:
defaults write com.apple.dt.Xcode IDEAdditionalCounterpartSuffixes -array-add "ViewModel" "View"| #ifndef NS_DESIGNATED_INITIALIZER | |
| #if __has_attribute(objc_designated_initializer) | |
| #define NS_DESIGNATED_INITIALIZER __attribute((objc_designated_initializer)) | |
| #else | |
| #define NS_DESIGNATED_INITIALIZER | |
| #endif | |
| #endif |
| // Defines a yet undocumented method to add a warning if super isn't called. | |
| #ifndef NS_REQUIRES_SUPER | |
| #if __has_attribute(objc_requires_super) | |
| #define NS_REQUIRES_SUPER __attribute((objc_requires_super)) | |
| #else | |
| #define NS_REQUIRES_SUPER | |
| #endif | |
| #endif | |
| @interface UIViewController (SubclassingWarnings) |