I'm trying to convert over my Objective-C to Swift - a little confused on the error here and how to take care of it. I've been reading through the documentation but still confused - this was generated from a converter. Anyone have any ideas?
Objective-C
- (id) init
{
self = [super init];
if (!self)
return nil;
self.cmRequestsQuery = [[NSMutableArray alloc] initWithCapacity:5];
self.cmQueryIsRuning = NO;
self.requestCounter = 0;
self.serverOfflineOrBadResponse = NO;
self.userWasLoggedIn = NO;
self.needToSendPushNotiToken = NO;
self.noInternetConection = NO;
self.needToUpdateToken = NO;
[[reqOperationManager sharedManager] setDelegate:self];
return self;
}
Swift
func init() -> AnyObject {
self = super()
if !self {
return nil
}
self.cmRequestsQuery = NSMutableArray(capacity: 5)
self.cmQueryIsRuning = false
self.requestCounter = 0
self.serverOfflineOrBadResponse = false
self.userWasLoggedIn = false
self.needToSendPushNotiToken = false
self.noInternetConection = false
self.needToUpdateToken = false
reqOperationManager.sharedManager().setDelegate(self)
return self
}
In Swift init
methods have no func
keyword and no return value and the point to call super is different.
init() {
First initialize all instance variables.
self.cmRequestsQuery = NSMutableArray(capacity: 5)
self.cmQueryIsRuning = false
self.requestCounter = 0
self.serverOfflineOrBadResponse = false
self.userWasLoggedIn = false
self.needToSendPushNotiToken = false
self.noInternetConection = false
self.needToUpdateToken = false
Then call super – if required – to get the instance.
super.init()
Then call the methods which use self
reqOperationManager.sharedManager().setDelegate(self)
That's it.
}
In some cases you have to add the override
keyword before init()
.
For more details please read the chapter about Initialization in the Swift Language Guide. It's worth it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With