In swift there is the concept of designated initializer (which is the "normal" constructor we know from other languages, I assume).
But there is also something called Convenience Initializer, which I do understand how to write, but the point is lost on me.
As, If I understand correctly, you can achieve the same thing without writing the keyword convenience, or not?
What is the use case for convenience initializer?
481 Views Asked by Itay Moav -Malimovka At
2
There are 2 best solutions below
0
Samurai Girl
On
As I understand, the only point in those initializers is convenience. Sometimes it happens that, we often need to create some object with same arguments over and over again. In that case, we can just add another init method which takes much less parameters and the remaining ones are hard coded.
For example, some Logger class
init(type: LoggerType, filepath: String, configurations: LoggerConfig, etc.)
It might be that we often use this logger with same arguments. To avoid duplicating code, we can add a convenience initializer with some default values
convenience init(){
self.init(type: LoggerType.SomeType, filepath: "/log", configurations: LoggerConfig.Default)
}
Related Questions in IOS
- URLSession requesting JSON array from server not working
- Incorrect display of LinearGradientBrush in IOS
- Module not found when building flutter app for IOS
- How to share metadata of an audio url file to a WhatsApp conversation with friends
- Occasional crash at NSURLSessionDataTask dataTaskWithRequest:completionHandler:
- Expo Deep linking on iOS is not working (because of Google sign-in?)
- On iOS, the keyboard does not offer a 6-character SMS code
- Hi, there is an error happened when I build my flutter app, after I'm installing firebase packages occurs that error
- The copy/paste functionalities don't work only on iOS in the Flutter app
- Hide LiveActivityIntent Button from Shortcuts App
- While Running Github Actions Pipeline: No Signing Certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID
- Actionable notification api call not working in background
- Accessibility : Full keyboard access with scroll view in swiftui
- There is a problem with the request entity - You are not allowed to create 'iOS' profile with App ID 'XXXX'
- I am getting "binding has not yet been initialized" error when trying to connect firebase with flutter
Related Questions in SWIFT
- Navigate after logged in with webservice
- URLSession requesting JSON array from server not working
- When using onDrag in SwiftUI on Mac how can I detect when the dragged object has been released anywhere?
- Protect OpenAI key using Firebase function
- How to correct error: "Cannot convert value of type 'MyType.Type' to expected argument type 'Binding<MyType>'"?
- How to share metadata of an audio url file to a WhatsApp conversation with friends
- Using @Bindable with a Observable type in SwiftUI
- How to make a scroll view of 9 images in a forEach loop open on image 6 if image 6 is clicked on from a grid?
- Using MTLPixelFormat.rgba16Float results in random round-off errors
- Search and highlight text of current text in PDFKit Swift
- How is passing a function as a parameter related to escaping autoclosure?
- Actionable notification api call not working in background
- Custom layout occupies all horizontal space
- Is it possible to fix slow CKAsset loading on Cloudkit?
- Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value - MapView.isMyLocationEnabled
Related Questions in INITIALIZATION
- How do I initialise a class within a class
- Initializing problem with a variable for a distance calculator in Java with if and else statement
- Is there are a way to determine process stages from inside a library
- Could an unitialized pointer be a NULL pointer?
- Initialization of an empty Bash indexed array
- Flutter dropdownMenue with conditions
- How to migrate to standalone in angular
- for loop initialization failure
- Why does my console.log output the incorrect HTML slider value in JavaScript?
- Why does VS Code give me this error? : non-aggregate type 'list<int>' cannot be initialized with an initializer listgcc
- Initialize std::array of certain type, but any size?
- Why would anyone declare a variable before defining it? Please provide example
- Why is clang-tidy giving me an uninitialized error for this c++ code?
- Why is my C++ program running fine with the debugger but not without it?
- Is there a way trough some method or property to postopone initialization of setGrid method of some ChildComponent in Angular?
Related Questions in SWIFT2
- New To Swift, Having Trouble Converting swift 2 to swift 5 manually
- Existential Types and Generics with Protocols Logic Swift 2
- Show Quantity label when product is in cart(Swift 5)
- SwiftUI. How do I access/manipulate data between views
- I mistakenly deleted a file from project navigator and now xcode say no schemes on top left
- Using countrypickerview ,I want to display only the phonecode not the flag in the left side of text field
- Constraining a collection view under a normal UIView
- Firebase inAppMessaging events not getting captured
- How to make on Swift-Wkwebview auto fill username and password?
- why i have to use print((sender as AnyObject).currentTitle!!) to print title and print(sender.currentTitle) not work?
- Get the most closest value of the CGFloat
- Accessibility Focus not being updated on custom control slider when thumb moves
- Get the user data from firebase cloud-based database and convert into dictionary
- String extension for matching regular expression
- Change sound button image on clicking another button swift 2.2
Related Questions in CONVENIENCE-METHODS
- Can a class inherit convenience inits even if there is designated inits
- Expose a Swift convenience initializer as an Objective-C factory constructor
- Create a generic Data initializer for Decodable types using Swift
- How to refresh a chunk's diff, during `git add -p`
- Convenience vs multiple inits Swift
- Convenience initialiser keeps crashing however designated initialiser works fine?
- Should I declare methods for developers convenience in an interface?
- Whats wrong with my convenience initializer when I attempt to call self.init?
- How can I make that an object of the same class become the return value of initializer?
- Extra argument in call, Convenience Initializers
- Is convenience keyword really necessary in swift?
- Why can't I use "self.init(type: .custom)" in convenience initializer at my subclass of UIButton
- Swift 3: Convenience Initializer Extending Foundation's 'Timer' Hangs
- UNNotificationCategory subclass init issue
- What is the difference between convenience init vs init in swift, explicit examples better
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Actually it's very easy to understand them: they are initializers with default parameters.
From the docs:
Example:
In the above case, you cannot call
self.init(), you have mark your initializer with theconveniencekeyword, otherwise it will be a compiler error. So you cannot chain two designated initializer from the same class.