Non-failable initializer requirement cannot be satisfied by failable initializer
I have this struct and I want its init
to be failable
because something could go wrong with the JSON dictionary I pass:
struct AdminModel:Interface{
var status:Any = ""
var l:String = ""
var p:String = ""
var url:String = ""
init?(json:NSDictionary){
if let status = json["status"] as? Any,
let l = json["l"] as? String,
let p = json["p"] as? String,
let url = json["url"] as? String
{
self.status = status
self.l = l
self.p = p
self.url = url
}else{
return nil
}
}
}
There's no issue until I add ?
after init to make init failable
: at that point XCode complains:
Non-failable initializer requirement 'init(json:)' cannot be satisfied by failable initializer ('init?')
Why my struct can't be failable? Should I declare failable even the protocol init?
swift struct failable
add a comment |
I have this struct and I want its init
to be failable
because something could go wrong with the JSON dictionary I pass:
struct AdminModel:Interface{
var status:Any = ""
var l:String = ""
var p:String = ""
var url:String = ""
init?(json:NSDictionary){
if let status = json["status"] as? Any,
let l = json["l"] as? String,
let p = json["p"] as? String,
let url = json["url"] as? String
{
self.status = status
self.l = l
self.p = p
self.url = url
}else{
return nil
}
}
}
There's no issue until I add ?
after init to make init failable
: at that point XCode complains:
Non-failable initializer requirement 'init(json:)' cannot be satisfied by failable initializer ('init?')
Why my struct can't be failable? Should I declare failable even the protocol init?
swift struct failable
2
What isInterface
? Perhaps it requires a non-failable init?– Without that, your code compiles.
– Martin R
Jul 28 '17 at 12:38
Interface is a protocol with a non-failable init, I suppose the error lies there, even if I read it elsewhere :-)
– user1094081
Jul 28 '17 at 12:40
1
That is the problem. The error message is quite clear, and your last sentence is the solution. – I am not sure what you are expecting.
– Martin R
Jul 28 '17 at 12:43
I could delete the question but someone as silly/tired as me could benefit from your comment
– user1094081
Jul 28 '17 at 13:00
add a comment |
I have this struct and I want its init
to be failable
because something could go wrong with the JSON dictionary I pass:
struct AdminModel:Interface{
var status:Any = ""
var l:String = ""
var p:String = ""
var url:String = ""
init?(json:NSDictionary){
if let status = json["status"] as? Any,
let l = json["l"] as? String,
let p = json["p"] as? String,
let url = json["url"] as? String
{
self.status = status
self.l = l
self.p = p
self.url = url
}else{
return nil
}
}
}
There's no issue until I add ?
after init to make init failable
: at that point XCode complains:
Non-failable initializer requirement 'init(json:)' cannot be satisfied by failable initializer ('init?')
Why my struct can't be failable? Should I declare failable even the protocol init?
swift struct failable
I have this struct and I want its init
to be failable
because something could go wrong with the JSON dictionary I pass:
struct AdminModel:Interface{
var status:Any = ""
var l:String = ""
var p:String = ""
var url:String = ""
init?(json:NSDictionary){
if let status = json["status"] as? Any,
let l = json["l"] as? String,
let p = json["p"] as? String,
let url = json["url"] as? String
{
self.status = status
self.l = l
self.p = p
self.url = url
}else{
return nil
}
}
}
There's no issue until I add ?
after init to make init failable
: at that point XCode complains:
Non-failable initializer requirement 'init(json:)' cannot be satisfied by failable initializer ('init?')
Why my struct can't be failable? Should I declare failable even the protocol init?
swift struct failable
swift struct failable
asked Jul 28 '17 at 12:34
user1094081
2
What isInterface
? Perhaps it requires a non-failable init?– Without that, your code compiles.
– Martin R
Jul 28 '17 at 12:38
Interface is a protocol with a non-failable init, I suppose the error lies there, even if I read it elsewhere :-)
– user1094081
Jul 28 '17 at 12:40
1
That is the problem. The error message is quite clear, and your last sentence is the solution. – I am not sure what you are expecting.
– Martin R
Jul 28 '17 at 12:43
I could delete the question but someone as silly/tired as me could benefit from your comment
– user1094081
Jul 28 '17 at 13:00
add a comment |
2
What isInterface
? Perhaps it requires a non-failable init?– Without that, your code compiles.
– Martin R
Jul 28 '17 at 12:38
Interface is a protocol with a non-failable init, I suppose the error lies there, even if I read it elsewhere :-)
– user1094081
Jul 28 '17 at 12:40
1
That is the problem. The error message is quite clear, and your last sentence is the solution. – I am not sure what you are expecting.
– Martin R
Jul 28 '17 at 12:43
I could delete the question but someone as silly/tired as me could benefit from your comment
– user1094081
Jul 28 '17 at 13:00
2
2
What is
Interface
? Perhaps it requires a non-failable init?– Without that, your code compiles.– Martin R
Jul 28 '17 at 12:38
What is
Interface
? Perhaps it requires a non-failable init?– Without that, your code compiles.– Martin R
Jul 28 '17 at 12:38
Interface is a protocol with a non-failable init, I suppose the error lies there, even if I read it elsewhere :-)
– user1094081
Jul 28 '17 at 12:40
Interface is a protocol with a non-failable init, I suppose the error lies there, even if I read it elsewhere :-)
– user1094081
Jul 28 '17 at 12:40
1
1
That is the problem. The error message is quite clear, and your last sentence is the solution. – I am not sure what you are expecting.
– Martin R
Jul 28 '17 at 12:43
That is the problem. The error message is quite clear, and your last sentence is the solution. – I am not sure what you are expecting.
– Martin R
Jul 28 '17 at 12:43
I could delete the question but someone as silly/tired as me could benefit from your comment
– user1094081
Jul 28 '17 at 13:00
I could delete the question but someone as silly/tired as me could benefit from your comment
– user1094081
Jul 28 '17 at 13:00
add a comment |
1 Answer
1
active
oldest
votes
Maybe your Interface
is like:
protocol Interface {
init(json: JSON)
}
but your AdminModel's init is init?(json: JSON)
, so you should keep consistent:
protocol Interface {
init?(json: JSON)
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f45373701%2fnon-failable-initializer-requirement-cannot-be-satisfied-by-failable-initializer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Maybe your Interface
is like:
protocol Interface {
init(json: JSON)
}
but your AdminModel's init is init?(json: JSON)
, so you should keep consistent:
protocol Interface {
init?(json: JSON)
}
add a comment |
Maybe your Interface
is like:
protocol Interface {
init(json: JSON)
}
but your AdminModel's init is init?(json: JSON)
, so you should keep consistent:
protocol Interface {
init?(json: JSON)
}
add a comment |
Maybe your Interface
is like:
protocol Interface {
init(json: JSON)
}
but your AdminModel's init is init?(json: JSON)
, so you should keep consistent:
protocol Interface {
init?(json: JSON)
}
Maybe your Interface
is like:
protocol Interface {
init(json: JSON)
}
but your AdminModel's init is init?(json: JSON)
, so you should keep consistent:
protocol Interface {
init?(json: JSON)
}
answered Nov 22 '18 at 7:52
yuanjileeyuanjilee
637
637
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f45373701%2fnon-failable-initializer-requirement-cannot-be-satisfied-by-failable-initializer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
What is
Interface
? Perhaps it requires a non-failable init?– Without that, your code compiles.– Martin R
Jul 28 '17 at 12:38
Interface is a protocol with a non-failable init, I suppose the error lies there, even if I read it elsewhere :-)
– user1094081
Jul 28 '17 at 12:40
1
That is the problem. The error message is quite clear, and your last sentence is the solution. – I am not sure what you are expecting.
– Martin R
Jul 28 '17 at 12:43
I could delete the question but someone as silly/tired as me could benefit from your comment
– user1094081
Jul 28 '17 at 13:00