Non-failable initializer requirement cannot be satisfied by failable initializer












0















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?










share|improve this question


















  • 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
















0















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?










share|improve this question


















  • 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














0












0








0








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?










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jul 28 '17 at 12:34







user1094081















  • 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














  • 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








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












1 Answer
1






active

oldest

votes


















0














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)
}





share|improve this answer























    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    0














    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)
    }





    share|improve this answer




























      0














      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)
      }





      share|improve this answer


























        0












        0








        0







        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)
        }





        share|improve this answer













        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)
        }






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 22 '18 at 7:52









        yuanjileeyuanjilee

        637




        637






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Costa Masnaga

            Fotorealismo

            Sidney Franklin