首页 > 解决方案 > Base64 解码返回 nil swift

问题描述

我正在尝试将 base64 类型解码为字符串,但内容始终为零。我是如何从 json 获取数据的。细绳 :

IyBTd2lmdHlKU09OCgpbIVtDYXJ0aGFnZSBjb21wYXRpYmxlXShodHRwczov\nL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NhcnRoYWdlLWNvbXBhdGlibGUtNEJD\nNTFELnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9naXRodWIuY29tL0NhcnRo\nYWdlL0NhcnRoYWdlKSAhW0NvY29hUG9kc10oaHR0cHM6Ly9pbWcuc2hpZWxk\ncy5pby9jb2NvYXBvZHMvdi9Td2lmdHlKU09OLnN2ZykgIVtQbGF0Zm9ybV0o\naHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9wbGF0Zm9ybXMtaU9TJTIw\nOC4wJTIwJTdDJTIwbWFjT1MlMjAxMC4xMCUyMCU3QyUyMHR2T1MlMjA5LjAl\nMjAlN0MlMjB3YXRjaE9TJTIwMy4wLUYyOEQwMC5zdmcpIFshW1Jldmlld2Vk\nIGJ5IEhvdW5kXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1Jldmll\nd2VkX2J5LUhvdW5kLThFNjRCMC5zdmcpXShodHRwczovL2hvdW5kY2kuY29t\nKQoKU3dpZnR5SlNPTiBtYWtlcyBpdCBlYXN5IHRvIGRlYWwgd2l0aCBKU09O\nIGRhdGEgaW4gU3dpZnQuCgpQbGF0Zm9ybSB8IEJ1aWxkIFN0YXR1cwotLS0t\nLS0tLS18IC0tLS0tLS0tLS0tLS0tfCAKKk9TICAgICAgfCBbIVtUcmF2aXMg\nQ0ldKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9Td2lmdHlKU09OL1N3aWZ0eUpT\nT04uc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcv\nU3dpZnR5SlNPTi9Td2lmdHlKU09OKSAgICB8IApbTGludXhdKGh0dHBzOi8v\nZ2l0aHViLmNvbS9JQk0tU3dpZnQvU3dpZnR5SlNPTikgICAgICB8IFshW0J1\naWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL0lCTS1Td2lmdC9T\nd2lmdHlKU09OLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMt\nY2kub3JnL0lCTS1Td2lmdC9Td2lmdHlKU09OKSAgICAgfCAKCgoxLiBbV2h5\nIGlzIHRoZSB0eXBpY2FsIEpTT04gaGFuZGxpbmcgaW4gU3dpZnQgTk9UIGdv\nb2RdKCN3aHktaXMtdGhlLXR5cGljYWwtanNvbi1oYW5kbGluZy1pbi1zd2lm\ndC1ub3QtZ29vZCkKMi4gW1JlcXVpcmVtZW50c10oI3JlcXVpcmVtZW50cykK\nMy4gW0ludGVncmF0aW9uXSgjaW50ZWdyYXRpb24pCjQuIFtVc2FnZV0oI3Vz\nYWdlKQogICAtIFtJbml0aWFsaXphdGlvbl0oI2luaXRpYWxpemF0aW9uKQog\nICAtIFtTdWJzY3JpcHRdKCNzdWJzY3JpcHQpCiAgIC0gW0xvb3BdKCNsb29w\nKQogICAtIFtFcnJvcl0oI2Vycm9yKQogICAtIFtPcHRpb25hbCBnZXR0ZXJd\nKCNvcHRpb25hbC1nZXR0ZXIpCiAgIC0gW05vbi1vcHRpb25hbCBnZXR0ZXJd\nKCNub24tb3B0aW9uYWwtZ2V0dGVyKQogICAtIFtTZXR0ZXJdKCNzZXR0ZXIp\nCiAgIC0gW1JhdyBvYmplY3RdKCNyYXctb2JqZWN0KQogICAtIFtMaXRlcmFs\nIGNvbnZlcnRpYmxlc10oI2xpdGVyYWwtY29udmVydGlibGVzKQogICAtIFtN\nZXJnaW5nXSgjbWVyZ2luZykKNS4gW1dvcmsgd2l0aCBBbGFtb2ZpcmVdKCN3\nb3JrLXdpdGgtYWxhbW9maXJlKQo2LiBbV29yayB3aXRoIE1veWFdKCN3b3Jr\nLXdpdGgtbW95YSkKNy4gW1N3aWZ0eUpTT04gTW9kZWwgR2VuZXJhdG9yXSgj\nc3dpZnR5anNvbi1tb2RlbC1nZW5lcmF0b3IpCgoKIyMgV2h5IGlzIHRoZSB0\neXBpY2FsIEpTT04gaGFuZGxpbmcgaW4gU3dpZnQgTk9UIGdvb2Q/CgpTd2lm\ndCBpcyB2ZXJ5IHN0cmljdCBhYm91dCB0eXBlcy4gQnV0IGFsdGhvdWdoIGV4\ncGxpY2l0IHR5cGluZyBpcyBnb29kIGZvciBzYXZpbmcgdXMgZnJvbSBtaXN0\nYWtlcywgaXQgYmVjb21lcyBwYWluZnVsIHdoZW4gZGVhbGluZyB3aXRoIEpT\nT04gYW5kIG90aGVyIGFyZWFzIHRoYXQgYXJlLCBieSBuYXR1cmUsIGltcGxp\nY2l0IGFib3V0IHR5cGVzLgoKVGFrZSB0aGUgVHdpdHRlciBBUEkgZm9yIGV4\nYW1wbGUuIFNheSB3ZSB3YW50IHRvIHJldHJpZXZlIGEgdXNlcidzICJuYW1l\nIiB2YWx1ZSBvZiBzb21lIHR3ZWV0IGluIFN3aWZ0IChhY2NvcmRpbmcgdG8g\nW1R3aXR0ZXIncyBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLnR3aXR0ZXIuY29t\nL2VuL2RvY3MvdHdlZXRzL3RpbWVsaW5lcy9hcGktcmVmZXJlbmNlL2dldC1z\ndGF0dXNlcy1ob21lX3RpbWVsaW5lKSkuCgpUaGUgY29kZSB3b3VsZCBsb29r\nIGxpa2UgdGhpczoKCmBgYHN3aWZ0CmlmIGxldCBzdGF0dXNlc0FycmF5ID0g\ndHJ5PyBKU09OU2VyaWFsaXphdGlvbi5qc29uT2JqZWN0KHdpdGg6IGRhdGEs\nIG9wdGlvbnM6IC5hbGxvd0ZyYWdtZW50cykgYXM/IFtbU3RyaW5nOiBBbnld\nXSwKICAgIGxldCB1c2VyID0gc3RhdHVzZXNBcnJheVswXVsidXNlciJdIGFz\nPyBbU3RyaW5nOiBBbnldLAogICAgbGV0IHVzZXJuYW1lID0gdXNlclsibmFt\nZSJdIGFzPyBTdHJpbmcgewogICAgLy8gRmluYWxseSB3ZSBnb3QgdGhlIHVz\nZXJuYW1lCn0KYGBgCgpJdCdzIG5vdCBnb29kLgoKRXZlbiBpZiB3ZSB1c2Ug\nb3B0aW9uYWwgY2hhaW5pbmcsIGl0IHdvdWxkIGJlIG1lc3N5OgoKYGBgc3dp\nZnQKaWYgbGV0IEpTT05PYmplY3QgPSB0cnkgSlNPTlNlcmlhbGl6YXRpb24u\nanNvbk9iamVjdCh3aXRoOiBkYXRhLCBvcHRpb25zOiAuYWxsb3dGcmFnbWVu\ndHMpIGFzPyBbW1N0cmluZzogQW55XV0sCiAgICBsZXQgdXNlcm5hbWUgPSAo\nSlNPTk9iamVjdFswXVsidXNlciJdIGFzPyBbU3RyaW5nOiBBbnldKT9bIm5h\nbWUiXSBhcz8gU3RyaW5nIHsKICAgICAgICAvLyBUaGVyZSdzIG91ciB1c2Vy\nbmFtZQp9CmBgYAoKQW4gdW5yZWFkYWJsZSBtZXNzLS1mb3Igc29tZXRoaW5n\nIHRoYXQgc2hvdWxkIHJlYWxseSBiZSBzaW1wbGUhCgpXaXRoIFN3aWZ0eUpT\nT04gYWxsIHlvdSBoYXZlIHRvIGRvIGlzOgoKYGBgc3dpZnQKbGV0IGpzb24g\nPSBKU09OKGRhdGE6IGRhdGFGcm9tTmV0d29ya2luZykKaWYgbGV0IHVzZXJO\nYW1lID0ganNvblswXVsidXNlciJdWyJuYW1lIl0uc3RyaW5nIHsKICAvL05v\ndyB5b3UgZ290IHlvdXIgdmFsdWUKfQpgYGAKCkFuZCBkb24ndCB3b3JyeSBh\nYm91dCB0aGUgT3B0aW9uYWwgV3JhcHBpbmcgdGhpbmcuIEl0J3MgZG9uZSBm\nb3IgeW91IGF1dG9tYXRpY2FsbHkuCgpgYGBzd2lmdApsZXQganNvbiA9IEpT\nT04oZGF0YTogZGF0YUZyb21OZXR3b3JraW5nKQpsZXQgcmVzdWx0ID0ganNv\nbls5OTk5OTldWyJ3cm9uZ19rZXkiXVsid3JvbmdfbmFtZSJdCmlmIGxldCB1\nc2VyTmFtZSA9IHJlc3VsdC5zdHJpbmcgewogICAgLy9DYWxtIGRvd24sIHRh\na2UgaXQgZWFzeSwgdGhlICIuc3RyaW5nIiBwcm9wZXJ0eSBzdGlsbCBwcm9k\ndWNlcyB0aGUgY29ycmVjdCBPcHRpb25hbCBTdHJpbmcgdHlwZSB3aXRoIHNh\nZmV0eQp9IGVsc2UgewogICAgLy9QcmludCB0aGUgZXJyb3IKICAgIHByaW50\nKHJlc3VsdC5lcnJvcikKfQpgYGAKCiMjIFJlcXVpcmVtZW50cwoKLSBpT1Mg\nOC4wKyB8IG1hY09TIDEwLjEwKyB8IHR2T1MgOS4wKyB8IHdhdGNoT1MgMi4w\nKwotIFhjb2RlIDgKCiMjIEludGVncmF0aW9uCgojIyMjIENvY29hUG9kcyAo\naU9TIDgrLCBPUyBYIDEwLjkrKQoKWW91IGNhbiB1c2UgW0NvY29hUG9kc10o\naHR0cDovL2NvY29hcG9kcy5vcmcvKSB0byBpbnN0YWxsIGBTd2lmdHlKU09O\nYCBieSBhZGRpbmcgaXQgdG8geW91ciBgUG9kZmlsZWA6CgpgYGBydWJ5CnBs\nYXRmb3JtIDppb3MsICc4LjAnCnVzZV9mcmFtZXdvcmtzIQoKdGFyZ2V0ICdN\neUFwcCcgZG8KICAgIHBvZCAnU3dpZnR5SlNPTicsICd+PiA0LjAnCmVuZApg\nYGAKCiMjIyMgQ2FydGhhZ2UgKGlPUyA4KywgT1MgWCAxMC45KykKCllvdSBj\nYW4gdXNlIFtDYXJ0aGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL0NhcnRoYWdl\nL0NhcnRoYWdlKSB0byBpbnN0YWxsIGBTd2lmdHlKU09OYCBieSBhZGRpbmcg\naXQgdG8geW91ciBgQ2FydGZpbGVgOgoKYGBgCmdpdGh1YiAiU3dpZnR5SlNP\nTi9Td2lmdHlKU09OIiB+PiA0LjAKYGBgCgpJZiB5b3UgdXNlIENhcnRoYWdl\nIHRvIGJ1aWxkIHlvdXIgZGVwZW5kZW5jaWVzLCBtYWtlIHN1cmUgeW91IGhh\ndmUgYWRkZWQgYFN3aWZ0eUpTT04uZnJhbWV3b3JrYCB0byB0aGUgIkxpbmtl\nZCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJpZXMiIHNlY3Rpb24gb2YgeW91ciB0\nYXJnZXQsIGFuZCBoYXZlIGluY2x1ZGVkIHRoZW0gaW4geW91ciBDYXJ0aGFn\nZSBmcmFtZXdvcmsgY29weWluZyBidWlsZCBwaGFzZS4KCiMjIyMgU3dpZnQg\nUGFja2FnZSBNYW5hZ2VyCgpZb3UgY2FuIHVzZSBbVGhlIFN3aWZ0IFBhY2th\nZ2UgTWFuYWdlcl0oaHR0cHM6Ly9zd2lmdC5vcmcvcGFja2FnZS1tYW5hZ2Vy\nKSB0byBpbnN0YWxsIGBTd2lmdHlKU09OYCBieSBhZGRpbmcgdGhlIHByb3Bl\nciBkZXNjcmlwdGlvbiB0byB5b3VyIGBQYWNrYWdlLnN3aWZ0YCBmaWxlOgoK\nYGBgc3dpZnQKLy8gc3dpZnQtdG9vbHMtdmVyc2lvbjo0LjAKaW1wb3J0IFBh\nY2thZ2VEZXNjcmlwdGlvbgoKbGV0IHBhY2thZ2UgPSBQYWNrYWdlKAogICAg\nbmFtZTogIllPVVJfUFJPSkVDVF9OQU1FIiwKICAgIGRlcGVuZGVuY2llczog\nWwogICAgICAgIC5wYWNrYWdlKHVybDogImh0dHBzOi8vZ2l0aHViLmNvbS9T\nd2lmdHlKU09OL1N3aWZ0eUpTT04uZ2l0IiwgZnJvbTogIjQuMC4wIiksCiAg\nICBdCikKYGBgClRoZW4gcnVuIGBzd2lmdCBidWlsZGAgd2hlbmV2ZXIgeW91\nIGdldCBwcmVwYXJlZC4KCiMjIyMgTWFudWFsbHkgKGlPUyA3KywgT1MgWCAx\nMC45KykKClRvIHVzZSB0aGlzIGxpYnJhcnkgaW4geW91ciBwcm9qZWN0IG1h\nbnVhbGx5IHlvdSBtYXk6ICAKCjEuIGZvciBQcm9qZWN0cywganVzdCBkcmFn\nIFN3aWZ0eUpTT04uc3dpZnQgdG8gdGhlIHByb2plY3QgdHJlZQoyLiBmb3Ig\nV29ya3NwYWNlcywgaW5jbHVkZSB0aGUgd2hvbGUgU3dpZnR5SlNPTi54Y29k\nZXByb2oKCiMjIFVzYWdlCgojIyMjIEluaXRpYWxpemF0aW9uCgpgYGBzd2lm\ndAppbXBvcnQgU3dpZnR5SlNPTgpgYGAKCmBgYHN3aWZ0CmxldCBqc29uID0g\nSlNPTihkYXRhOiBkYXRhRnJvbU5ldHdvcmtpbmcpCmBgYApPcgoKYGBgc3dp\nZnQKbGV0IGpzb24gPSBKU09OKGpzb25PYmplY3QpCmBgYApPcgoKYGBgc3dp\nZnQKaWYgbGV0IGRhdGFGcm9tU3RyaW5nID0ganNvblN0cmluZy5kYXRhKHVz\naW5nOiAudXRmOCwgYWxsb3dMb3NzeUNvbnZlcnNpb246IGZhbHNlKSB7CiAg\nICBsZXQganNvbiA9IEpTT04oZGF0YTogZGF0YUZyb21TdHJpbmcpCn0KYGBg\nCgojIyMjIFN1YnNjcmlwdAoKYGBgc3dpZnQKLy8gR2V0dGluZyBhIGRvdWJs\nZSBmcm9tIGEgSlNPTiBBcnJheQpsZXQgbmFtZSA9IGpzb25bMF0uZG91Ymxl\nCmBgYAoKYGBgc3dpZnQKLy8gR2V0dGluZyBhbiBhcnJheSBvZiBzdHJpbmcg\nZnJvbSBhIEpTT04gQXJyYXkKbGV0IGFycmF5TmFtZXMgPSAganNvblsidXNl\ncnMiXS5hcnJheVZhbHVlLm1hcCB7JDBbIm5hbWUiXS5zdHJpbmdWYWx1ZX0K\nYGBgCgpgYGBzd2lmdAovLyBHZXR0aW5nIGEgc3RyaW5nIGZyb20gYSBKU09O\nIERpY3Rpb25hcnkKbGV0IG5hbWUgPSBqc29uWyJuYW1lIl0uc3RyaW5nVmFs\ndWUKYGBgCgpgYGBzd2lmdAovLyBHZXR0aW5nIGEgc3RyaW5nIHVzaW5nIGEg\ncGF0aCB0byB0aGUgZWxlbWVudApsZXQgcGF0aDogW0pTT05TdWJzY3JpcHRU\neXBlXSA9IFsxLCJsaXN0IiwyLCJuYW1lIl0KbGV0IG5hbWUgPSBqc29uW3Bh\ndGhdLnN0cmluZwovLyBKdXN0IHRoZSBzYW1lCmxldCBuYW1lID0ganNvblsx\nXVsibGlzdCJdWzJdWyJuYW1lIl0uc3RyaW5nCi8vIEFsdGVybmF0aXZlbHkK\nbGV0IG5hbWUgPSBqc29uWzEsImxpc3QiLDIsIm5hbWUiXS5zdHJpbmcKYGBg\nCgpgYGBzd2lmdAovLyBXaXRoIGEgaGFyZCB3YXkKbGV0IG5hbWUgPSBqc29u\nW10uc3RyaW5nCmBgYAoKYGBgc3dpZnQKLy8gV2l0aCBhIGN1c3RvbSB3YXkK\nbGV0IGtleXM6W0pTT05TdWJzY3JpcHRUeXBlXSA9IFsxLCJsaXN0IiwyLCJu\nYW1lIl0KbGV0IG5hbWUgPSBqc29uW2tleXNdLnN0cmluZwpgYGAKCiMjIyMg\nTG9vcAoKYGBgc3dpZnQKLy8gSWYganNvbiBpcyAuRGljdGlvbmFyeQpmb3Ig\nKGtleSxzdWJKc29uKTooU3RyaW5nLCBKU09OKSBpbiBqc29uIHsKICAgLy8g\nRG8gc29tZXRoaW5nIHlvdSB3YW50Cn0KYGBgCgoqVGhlIGZpcnN0IGVsZW1l\nbnQgaXMgYWx3YXlzIGEgU3RyaW5nLCBldmVuIGlmIHRoZSBKU09OIGlzIGFu\nIEFycmF5KgoKYGBgc3dpZnQKLy8gSWYganNvbiBpcyAuQXJyYXkKLy8gVGhl\nIGBpbmRleGAgaXMgMC4uPGpzb24uY291bnQncyBzdHJpbmcgdmFsdWUKZm9y\nIChpbmRleCxzdWJKc29uKTooU3RyaW5nLCBKU09OKSBpbiBqc29uIHsKICAg\nIC8vIERvIHNvbWV0aGluZyB5b3Ugd2FudAp9CmBgYAoKIyMjIyBFcnJvcgoK\nIyMjIyMgU3dpZnR5SlNPTiA0LngKClN3aWZ0eUpTT04gNC54IGludHJvZHVj\nZXMgYW4gZW51bSB0eXBlIGNhbGxlZCBgU3dpZnR5SlNPTkVycm9yYCwgd2hp\nY2ggaW5jbHVkZXMgYHVuc3VwcG9ydGVkVHlwZWAsIGBpbmRleE91dE9mQm91\nbmRzYCwgYGVsZW1lbnRUb29EZWVwYCwgYHdyb25nVHlwZWAsIGBub3RFeGlz\ndGAgYW5kIGBpbnZhbGlkSlNPTmAsIGF0IHRoZSBzYW1lIHRpbWUsIGBFcnJv\nckRvbWFpbmAgYXJlIGJlaW5nIHJlcGxhY2VkIGJ5IGBTd2lmdHlKU09ORXJy\nb3IuZXJyb3JEb21haW5gLgpOb3RlOiBUaG9zZSBvbGQgZXJyb3IgdHlwZXMg\nYXJlIGRlcHJlY2F0ZWQgaW4gU3dpZnR5SlNPTiA0LnggYW5kIHdpbGwgYmUg\ncmVtb3ZlZCBpbiB0aGUgZnV0dXJlIHJlbGVhc2UuCgojIyMjIyBTd2lmdHlK\nU09OIDMueAoKVXNlIGEgc3Vic2NyaXB0IHRvIGdldC9zZXQgYSB2YWx1ZSBp\nbiBhbiBBcnJheSBvciBEaWN0aW9uYXJ5CgpJZiB0aGUgSlNPTiBpczoKKiAg\nYW4gYXJyYXksIHRoZSBhcHAgbWF5IGNyYXNoIHdpdGggImluZGV4IG91dC1v\nZi1ib3VuZHMuIgoqICBhIGRpY3Rpb25hcnksIGl0IHdpbGwgYmUgYXNzaWdu\nZWQgdG8gYG5pbGAgd2l0aG91dCBhIHJlYXNvbi4KKiAgbm90IGFuIGFycmF5\nIG9yIGEgZGljdGlvbmFyeSwgdGhlIGFwcCBtYXkgY3Jhc2ggd2l0aCBhbiAi\ndW5yZWNvZ25pc2VkIHNlbGVjdG9yIiBleGNlcHRpb24uCgpUaGlzIHdpbGwg\nbmV2ZXIgaGFwcGVuIGluIFN3aWZ0eUpTT04uCgpgYGBzd2lmdApsZXQganNv\nbiA9IEpTT04oWyJuYW1lIiwgImFnZSJdKQppZiBsZXQgbmFtZSA9IGpzb25b\nOTk5XS5zdHJpbmcgewogICAgLy8gRG8gc29tZXRoaW5nIHlvdSB3YW50Cn0g\nZWxzZSB7CiAgICBwcmludChqc29uWzk5OV0uZXJyb3IhKSAvLyAiQXJyYXlb\nOTk5XSBpcyBvdXQgb2YgYm91bmRzIgp9CmBgYAoKYGBgc3dpZnQKbGV0IGpz\nb24gPSBKU09OKFsibmFtZSI6IkphY2siLCAiYWdlIjogMjVdKQppZiBsZXQg\nbmFtZSA9IGpzb25bImFkZHJlc3MiXS5zdHJpbmcgewogICAgLy8gRG8gc29t\nZXRoaW5nIHlvdSB3YW50Cn0gZWxzZSB7CiAgICBwcmludChqc29uWyJhZGRy\nZXNzIl0uZXJyb3IhKSAvLyAiRGljdGlvbmFyeVsiYWRkcmVzcyJdIGRvZXMg\nbm90IGV4aXN0Igp9CmBgYAoKYGBgc3dpZnQKbGV0IGpzb24gPSBKU09OKDEy\nMzQ1KQppZiBsZXQgYWdlID0ganNvblswXS5zdHJpbmcgewogICAgLy8gRG8g\nc29tZXRoaW5nIHlvdSB3YW50Cn0gZWxzZSB7CiAgICBwcmludChqc29uWzBd\nKSAgICAgICAvLyAiQXJyYXlbMF0gZmFpbHVyZSwgSXQgaXMgbm90IGFuIGFy\ncmF5IgogICAgcHJpbnQoanNvblswXS5lcnJvciEpIC8vICJBcnJheVswXSBm\nYWlsdXJlLCBJdCBpcyBub3QgYW4gYXJyYXkiCn0KCmlmIGxldCBuYW1lID0g\nanNvblsibmFtZSJdLnN0cmluZyB7CiAgICAvLyBEbyBzb21ldGhpbmcgeW91\nIHdhbnQKfSBlbHNlIHsKICAgIHByaW50KGpzb25bIm5hbWUiXSkgICAgICAg\nLy8gIkRpY3Rpb25hcnlbXCJuYW1lIl0gZmFpbHVyZSwgSXQgaXMgbm90IGFu\nIGRpY3Rpb25hcnkiCiAgICBwcmludChqc29uWyJuYW1lIl0uZXJyb3IhKSAv\nLyAiRGljdGlvbmFyeVtcIm5hbWUiXSBmYWlsdXJlLCBJdCBpcyBub3QgYW4g\nZGljdGlvbmFyeSIKfQpgYGAKCiMjIyMgT3B0aW9uYWwgZ2V0dGVyCgpgYGBz\nd2lmdAovLyBOU051bWJlcgppZiBsZXQgaWQgPSBqc29uWyJ1c2VyIl1bImZh\ndm91cml0ZXNfY291bnQiXS5udW1iZXIgewogICAvLyBEbyBzb21ldGhpbmcg\neW91IHdhbnQKfSBlbHNlIHsKICAgLy8gUHJpbnQgdGhlIGVycm9yCiAgIHBy\naW50KGpzb25bInVzZXIiXVsiZmF2b3VyaXRlc19jb3VudCJdLmVycm9yISkK\nfQpgYGAKCmBgYHN3aWZ0Ci8vIFN0cmluZwppZiBsZXQgaWQgPSBqc29uWyJ1\nc2VyIl1bIm5hbWUiXS5zdHJpbmcgewogICAvLyBEbyBzb21ldGhpbmcgeW91\nIHdhbnQKfSBlbHNlIHsKICAgLy8gUHJpbnQgdGhlIGVycm9yCiAgIHByaW50\nKGpzb25bInVzZXIiXVsibmFtZSJdLmVycm9yISkKfQpgYGAKCmBgYHN3aWZ0\nCi8vIEJvb2wKaWYgbGV0IGlkID0ganNvblsidXNlciJdWyJpc190cmFuc2xh\ndG9yIl0uYm9vbCB7CiAgIC8vIERvIHNvbWV0aGluZyB5b3Ugd2FudAp9IGVs\nc2UgewogICAvLyBQcmludCB0aGUgZXJyb3IKICAgcHJpbnQoanNvblsidXNl\nciJdWyJpc190cmFuc2xhdG9yIl0uZXJyb3IhKQp9CmBgYAoKYGBgc3dpZnQK\nLy8gSW50CmlmIGxldCBpZCA9IGpzb25bInVzZXIiXVsiaWQiXS5pbnQgewog\nICAvLyBEbyBzb21ldGhpbmcgeW91IHdhbnQKfSBlbHNlIHsKICAgLy8gUHJp\nbnQgdGhlIGVycm9yCiAgIHByaW50KGpzb25bInVzZXIiXVsiaWQiXS5lcnJv\nciEpCn0KLi4uCmBgYAoKIyMjIyBOb24tb3B0aW9uYWwgZ2V0dGVyCgpOb24t\nb3B0aW9uYWwgZ2V0dGVyIGlzIG5hbWVkIGB4eHhWYWx1ZWAKCmBgYHN3aWZ0\nCi8vIElmIG5vdCBhIE51bWJlciBvciBuaWwsIHJldHVybiAwCmxldCBpZDog\nSW50ID0ganNvblsiaWQiXS5pbnRWYWx1ZQpgYGAKCmBgYHN3aWZ0Ci8vIElm\nIG5vdCBhIFN0cmluZyBvciBuaWwsIHJldHVybiAiIgpsZXQgbmFtZTogU3Ry\naW5nID0ganNvblsibmFtZSJdLnN0cmluZ1ZhbHVlCmBgYAoKYGBgc3dpZnQK\nLy8gSWYgbm90IGFuIEFycmF5IG9yIG5pbCwgcmV0dXJuIFtdCmxldCBsaXN0\nOiBBcnJheTxKU09OPiA9IGpzb25bImxpc3QiXS5hcnJheVZhbHVlCmBgYAoK\nYGBgc3dpZnQKLy8gSWYgbm90IGEgRGljdGlvbmFyeSBvciBuaWwsIHJldHVy\nbiBbOl0KbGV0IHVzZXI6IERpY3Rpb25hcnk8U3RyaW5nLCBKU09OPiA9IGpz\nb25bInVzZXIiXS5kaWN0aW9uYXJ5VmFsdWUKYGBgCgojIyMjIFNldHRlcgoK\nYGBgc3dpZnQKanNvblsibmFtZSJdID0gSlNPTigibmV3LW5hbWUiKQpqc29u\nWzBdID0gSlNPTigxKQpgYGAKCmBgYHN3aWZ0Cmpzb25bImlkIl0uaW50ID0g\nIDEyMzQ1Njc4OTAKanNvblsiY29vcmRpbmF0ZSJdLmRvdWJsZSA9ICA4NzY2\nLjc2Ngpqc29uWyJuYW1lIl0uc3RyaW5nID0gICJKYWNrIgpqc29uLmFycmF5\nT2JqZWN0ID0gWzEsMiwzLDRdCmpzb24uZGljdGlvbmFyeU9iamVjdCA9IFsi\nbmFtZSI6IkphY2siLCAiYWdlIjoyNV0KYGBgCgojIyMjIFJhdyBvYmplY3QK\nCmBgYHN3aWZ0CmxldCByYXdPYmplY3Q6IEFueSA9IGpzb24ub2JqZWN0CmBg\nYAoKYGBgc3dpZnQKbGV0IHJhd1ZhbHVlOiBBbnkgPSBqc29uLnJhd1ZhbHVl\nCmBgYAoKYGBgc3dpZnQKLy9jb252ZXJ0IHRoZSBKU09OIHRvIHJhdyBOU0Rh\ndGEKZG8gewoJbGV0IHJhd0RhdGEgPSB0cnkganNvbi5yYXdEYXRhKCkKICAv\nL0RvIHNvbWV0aGluZyB5b3Ugd2FudAp9IGNhdGNoIHsKCXByaW50KCJFcnJv\nciBcKGVycm9yKSIpCn0KYGBgCgpgYGBzd2lmdAovL2NvbnZlcnQgdGhlIEpT\nT04gdG8gYSByYXcgU3RyaW5nCmlmIGxldCByYXdTdHJpbmcgPSBqc29uLnJh\nd1N0cmluZygpIHsKICAvL0RvIHNvbWV0aGluZyB5b3Ugd2FudAp9IGVsc2Ug\newoJcHJpbnQoImpzb24ucmF3U3RyaW5nIGlzIG5pbCIpCn0KYGBgCgojIyMj\nIEV4aXN0ZW5jZQoKYGBgc3dpZnQKLy8gc2hvd3MgeW91IHdoZXRoZXIgdmFs\ndWUgc3BlY2lmaWVkIGluIEpTT04gb3Igbm90CmlmIGpzb25bIm5hbWUiXS5l\neGlzdHMoKQpgYGAKCiMjIyMgTGl0ZXJhbCBjb252ZXJ0aWJsZXMKCkZvciBt\nb3JlIGluZm8gYWJvdXQgbGl0ZXJhbCBjb252ZXJ0aWJsZXM6IFtTd2lmdCBM\naXRlcmFsIENvbnZlcnRpYmxlc10oaHR0cDovL25zaGlwc3Rlci5jb20vc3dp\nZnQtbGl0ZXJhbC1jb252ZXJ0aWJsZS8pCgpgYGBzd2lmdAovLyBTdHJpbmdM\naXRlcmFsQ29udmVydGlibGUKbGV0IGpzb246IEpTT04gPSAiSSdtIGEganNv\nbiIKYGBgCgpgYGBzd2lmdAovIC9JbnRlZ2VyTGl0ZXJhbENvbnZlcnRpYmxl\nCmxldCBqc29uOiBKU09OID0gIDEyMzQ1CmBgYAoKYGBgc3dpZnQKLy8gQm9v\nbGVhbkxpdGVyYWxDb252ZXJ0aWJsZQpsZXQganNvbjogSlNPTiA9ICB0cnVl\nCmBgYAoKYGBgc3dpZnQKLy8gRmxvYXRMaXRlcmFsQ29udmVydGlibGUKbGV0\nIGpzb246IEpTT04gPSAgMi44NzY1CmBgYAoKYGBgc3dpZnQKLy8gRGljdGlv\nbmFyeUxpdGVyYWxDb252ZXJ0aWJsZQpsZXQganNvbjogSlNPTiA9ICBbIkki\nOiJhbSIsICJhIjoianNvbiJdCmBgYAoKYGBgc3dpZnQKLy8gQXJyYXlMaXRl\ncmFsQ29udmVydGlibGUKbGV0IGpzb246IEpTT04gPSAgWyJJIiwgImFtIiwg\nImEiLCAianNvbiJdCmBgYAoKYGBgc3dpZnQKLy8gV2l0aCBzdWJzY3JpcHQg\naW4gYXJyYXkKdmFyIGpzb246IEpTT04gPSAgWzEsMiwzXQpqc29uWzBdID0g\nMTAwCmpzb25bMV0gPSAyMDAKanNvblsyXSA9IDMwMApqc29uWzk5OV0gPSAz\nMDAgLy8gRG9uJ3Qgd29ycnksIG5vdGhpbmcgd2lsbCBoYXBwZW4KYGBgCgpg\nYGBzd2lmdAovLyBXaXRoIHN1YnNjcmlwdCBpbiBkaWN0aW9uYXJ5CnZhciBq\nc29uOiBKU09OID0gIFsibmFtZSI6ICJKYWNrIiwgImFnZSI6IDI1XQpqc29u\nWyJuYW1lIl0gPSAiTWlrZSIKanNvblsiYWdlIl0gPSAiMjUiIC8vIEl0J3Mg\nT0sgdG8gc2V0IFN0cmluZwpqc29uWyJhZGRyZXNzIl0gPSAiTC5BLiIgLy8g\nQWRkIHRoZSAiYWRkcmVzcyI6ICJMLkEuIiBpbiBqc29uCmBgYAoKYGBgc3dp\nZnQKLy8gQXJyYXkgJiBEaWN0aW9uYXJ5CnZhciBqc29uOiBKU09OID0gIFsi\nbmFtZSI6ICJKYWNrIiwgImFnZSI6IDI1LCAibGlzdCI6IFsiYSIsICJiIiwg\nImMiLCBbIndoYXQiOiAidGhpcyJdXV0KanNvblsibGlzdCJdWzNdWyJ3aGF0\nIl0gPSAidGhhdCIKanNvblsibGlzdCIsMywid2hhdCJdID0gInRoYXQiCmxl\ndCBwYXRoOiBbSlNPTlN1YnNjcmlwdFR5cGVdID0gWyJsaXN0IiwzLCJ3aGF0\nIl0KanNvbltwYXRoXSA9ICJ0aGF0IgpgYGAKCmBgYHN3aWZ0Ci8vIFdpdGgg\nb3RoZXIgSlNPTiBvYmplY3RzCmxldCB1c2VyOiBKU09OID0gWyJ1c2VybmFt\nZSIgOiAiU3RldmUiLCAicGFzc3dvcmQiOiAic3VwZXJzZWN1cmVwYXNzd29y\nZCJdCmxldCBhdXRoOiBKU09OID0gWwogICJ1c2VyIjogdXNlci5vYmplY3Qs\nIC8vIHVzZSB1c2VyLm9iamVjdCBpbnN0ZWFkIG9mIGp1c3QgdXNlcgogICJh\ncGlrZXkiOiAic3VwZXJzZWNyZXRhcGl0b2tlbiIKXQpgYGAKCiMjIyMgTWVy\nZ2luZwoKSXQgaXMgcG9zc2libGUgdG8gbWVyZ2Ugb25lIEpTT04gaW50byBh\nbm90aGVyIEpTT04uIE1lcmdpbmcgYSBKU09OIGludG8gYW5vdGhlciBKU09O\nIGFkZHMgYWxsIG5vbiBleGlzdGluZyB2YWx1ZXMgdG8gdGhlIG9yaWdpbmFs\nIEpTT04gd2hpY2ggYXJlIG9ubHkgcHJlc2VudCBpbiB0aGUgYG90aGVyYCBK\nU09OLgoKSWYgYm90aCBKU09OcyBjb250YWluIGEgdmFsdWUgZm9yIHRoZSBz\nYW1lIGtleSwgX21vc3RseV8gdGhpcyB2YWx1ZSBnZXRzIG92ZXJ3cml0dGVu\nIGluIHRoZSBvcmlnaW5hbCBKU09OLCBidXQgdGhlcmUgYXJlIHR3byBjYXNl\ncyB3aGVyZSBpdCBwcm92aWRlcyBzb21lIHNwZWNpYWwgdHJlYXRtZW50OgoK\nLSBJbiBjYXNlIG9mIGJvdGggdmFsdWVzIGJlaW5nIGEgYEpTT04uVHlwZS5h\ncnJheWAgdGhlIHZhbHVlcyBmb3JtIHRoZSBhcnJheSBmb3VuZCBpbiB0aGUg\nYG90aGVyYCBKU09OIGdldHRpbmcgYXBwZW5kZWQgdG8gdGhlIG9yaWdpbmFs\nIEpTT04ncyBhcnJheSB2YWx1ZS4KLSBJbiBjYXNlIG9mIGJvdGggdmFsdWVz\nIGJlaW5nIGEgYEpTT04uVHlwZS5kaWN0aW9uYXJ5YCBib3RoIEpTT04tdmFs\ndWVzIGFyZSBnZXR0aW5nIG1lcmdlZCB0aGUgc2FtZSB3YXkgdGhlIGVuY2Fw\nc3VsYXRpbmcgSlNPTiBpcyBtZXJnZWQuCgpJbiBhIGNhc2Ugd2hlcmUgdHdv\nIGZpZWxkcyBpbiBhIEpTT04gaGF2ZSBkaWZmZXJlbnQgdHlwZXMsIHRoZSB2\nYWx1ZSB3aWxsIGdldCBhbHdheXMgb3ZlcndyaXR0ZW4uCgpUaGVyZSBhcmUg\ndHdvIGRpZmZlcmVudCBmYXNoaW9ucyBmb3IgbWVyZ2luZzogYG1lcmdlYCBt\nb2RpZmllcyB0aGUgb3JpZ2luYWwgSlNPTiwgd2hlcmVhcyBgbWVyZ2VkYCB3\nb3JrcyBub24tZGVzdHJ1Y3RpdmVseSBvbiBhIGNvcHkuCgpgYGBzd2lmdAps\nZXQgb3JpZ2luYWw6IEpTT04gPSBbCiAgICAiZmlyc3RfbmFtZSI6ICJKb2hu\nIiwKICAgICJhZ2UiOiAyMCwKICAgICJza2lsbHMiOiBbIkNvZGluZyIsICJS\nZWFkaW5nIl0sCiAgICAiYWRkcmVzcyI6IFsKICAgICAgICAic3RyZWV0Ijog\nIkZyb250IFN0IiwKICAgICAgICAiemlwIjogIjEyMzQ1IiwKICAgIF0KXQoK\nbGV0IHVwZGF0ZTogSlNPTiA9IFsKICAgICJsYXN0X25hbWUiOiAiRG9lIiwK\nICAgICJhZ2UiOiAyMSwKICAgICJza2lsbHMiOiBbIldyaXRpbmciXSwKICAg\nICJhZGRyZXNzIjogWwogICAgICAgICJ6aXAiOiAiMTIzNDIiLAogICAgICAg\nICJjaXR5IjogIk5ldyBZb3JrIENpdHkiCiAgICBdCl0KCmxldCB1cGRhdGVk\nID0gb3JpZ2luYWwubWVyZ2Uod2l0aDogdXBkYXRlKQovLyBbCi8vICAgICAi\nZmlyc3RfbmFtZSI6ICJKb2huIiwKLy8gICAgICJsYXN0X25hbWUiOiAiRG9l\nIiwKLy8gICAgICJhZ2UiOiAyMSwKLy8gICAgICJza2lsbHMiOiBbIkNvZGlu\nZyIsICJSZWFkaW5nIiwgIldyaXRpbmciXSwKLy8gICAgICJhZGRyZXNzIjog\nWwovLyAgICAgICAgICJzdHJlZXQiOiAiRnJvbnQgU3QiLAovLyAgICAgICAg\nICJ6aXAiOiAiMTIzNDIiLAovLyAgICAgICAgICJjaXR5IjogIk5ldyBZb3Jr\nIENpdHkiCi8vICAgICBdCi8vIF0KYGBgCgojIyBTdHJpbmcgcmVwcmVzZW50\nYXRpb24KVGhlcmUgYXJlIHR3byBvcHRpb25zIGF2YWlsYWJsZToKLSB1c2Ug\ndGhlIGRlZmF1bHQgU3dpZnQgb25lCi0gdXNlIGEgY3VzdG9tIG9uZSB0aGF0\nIHdpbGwgaGFuZGxlIG9wdGlvbmFscyB3ZWxsIGFuZCByZXByZXNlbnQgYG5p\nbGAgYXMgYCJudWxsImA6CmBgYHN3aWZ0CmxldCBkaWN0ID0gWyIxIjoyLCAi\nMiI6InR3byIsICIzIjogbmlsXSBhcyBbU3RyaW5nOiBBbnk/XQpsZXQganNv\nbiA9IEpTT04oZGljdCkKbGV0IHJlcHJlc2VudGF0aW9uID0ganNvbi5yYXdT\ndHJpbmcob3B0aW9uczogWy5jYXN0TmlsVG9OU051bGw6IHRydWVdKQovLyBy\nZXByZXNlbnRhdGlvbiBpcyAie1wiMVwiOjIsXCIyXCI6XCJ0d29cIixcIjNc\nIjpudWxsfSIsIHdoaWNoIHJlcHJlc2VudHMgeyIxIjoyLCIyIjoidHdvIiwi\nMyI6bnVsbH0KYGBgCgojIyBXb3JrIHdpdGggW0FsYW1vZmlyZV0oaHR0cHM6\nLy9naXRodWIuY29tL0FsYW1vZmlyZS9BbGFtb2ZpcmUpCgpTd2lmdHlKU09O\nIG5pY2VseSB3cmFwcyB0aGUgcmVzdWx0IG9mIHRoZSBBbGFtb2ZpcmUgSlNP\nTiByZXNwb25zZSBoYW5kbGVyOgoKYGBgc3dpZnQKQWxhbW9maXJlLnJlcXVl\nc3QodXJsLCBtZXRob2Q6IC5nZXQpLnZhbGlkYXRlKCkucmVzcG9uc2VKU09O\nIHsgcmVzcG9uc2UgaW4KICAgIHN3aXRjaCByZXNwb25zZS5yZXN1bHQgewog\nICAgY2FzZSAuc3VjY2VzcyhsZXQgdmFsdWUpOgogICAgICAgIGxldCBqc29u\nID0gSlNPTih2YWx1ZSkKICAgICAgICBwcmludCgiSlNPTjogXChqc29uKSIp\nCiAgICBjYXNlIC5mYWlsdXJlKGxldCBlcnJvcik6CiAgICAgICAgcHJpbnQo\nZXJyb3IpCiAgICB9Cn0KYGBgCgpXZSBhbHNvIHByb3ZpZGUgYW4gZXh0ZW5z\naW9uIG9mIEFsYW1vZmlyZSBmb3Igc2VyaWFsaXppbmcgTlNEYXRhIHRvIFN3\naWZ0eUpTT04ncyBKU09OLgoKU2VlOiBbQWxhbW9maXJlLVN3aWZ0eUpTT05d\nKGh0dHBzOi8vZ2l0aHViLmNvbS9Td2lmdHlKU09OL0FsYW1vZmlyZS1Td2lm\ndHlKU09OKQoKCiMjIFdvcmsgd2l0aCBbTW95YV0oaHR0cHM6Ly9naXRodWIu\nY29tL01veWEvTW95YSkKClN3aWZ0eUpTT04gcGFyc2UgZGF0YSB0byBKU09O\nOgoKYGBgc3dpZnQKbGV0IHByb3ZpZGVyID0gTW95YVByb3ZpZGVyPEJhY2tl\nbmQ+KCkKcHJvdmlkZXIucmVxdWVzdCguc2hvd1Byb2R1Y3RzKSB7IHJlc3Vs\ndCBpbgogICAgc3dpdGNoIHJlc3VsdCB7CiAgICBjYXNlIGxldCAuc3VjY2Vz\ncyhtb3lhUmVzcG9uc2UpOgogICAgICAgIGxldCBkYXRhID0gbW95YVJlc3Bv\nbnNlLmRhdGEKICAgICAgICBsZXQganNvbiA9IEpTT04oZGF0YTogZGF0YSkg\nLy8gY29udmVydCBuZXR3b3JrIGRhdGEgdG8ganNvbgogICAgICAgIHByaW50\nKGpzb24pCiAgICBjYXNlIGxldCAuZmFpbHVyZShlcnJvcik6CiAgICAgICAg\ncHJpbnQoImVycm9yOiBcKGVycm9yKSIpCiAgICB9Cn0KCmBgYAoKIyMgU3dp\nZnR5SlNPTiBNb2RlbCBHZW5lcmF0b3IKVG9vbHMgdG8gZ2VuZXJhdGUgU3dp\nZnR5SlNPTiBNb2RlbHMKKiBbSlNPTiBDYWZlXShodHRwOi8vd3d3Lmpzb25j\nYWZlLmNvbS8pCiogW0pTT04gRXhwb3J0XShodHRwczovL2dpdGh1Yi5jb20v\nQWhtZWQtQWxpL0pTT05FeHBvcnQpCg==\n
func downloadJSON (completed: @escaping () -> ()) {
    let url = URL (string: "https://api.github.com/repos/\(details!.full_name)/readme")
    URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error == nil {
            do {
                print("ceva")
                self.read = try JSONDecoder().decode(Readm.self, from: data!)
                DispatchQueue.main.async {
                    completed()
                }
            } catch {
                print (error)
            }
            
        }
    }.resume()
}

这是我的 func base64,我在返回字符串处放了一个断点,但代码永远不会执行,可能会继续分支“return nil”

func base64Decoded(word: String) -> String? {
    guard let base64Data = Data(base64Encoded: word) else { return nil}
    return String(data: base64Data, encoding: .utf8)
}

这就是我打电话的方式

downloadJSON {
    if let content = self.read?.content {
        self.readMeLabel.text = self.base64Decoded(word: content)
    }
}

编辑:我添加了以下功能:

func base64Encoded(word: String) -> String? {
        let base64Encoded = word.data(using: String.Encoding.utf8)?.base64EncodedString()
        return base64Encoded
    }

并修改了downloadJSON的内容来自

if let content = self.read?.content {
        self.readMeLabel.text = self.base64Decoded(word: content)
    }

downloadJSON {
            if let content = self.base64Encoded(word: self.read!.content) {
              self.readMeLabel.text = self.base64Decoded(word: content)
           }

现在,我从 base64Decoded 的返回字符串正在工作,但在 readMeLabel 中显示的是 base64 ,而不是解码后的字符串。

标签: jsonswiftapibase64

解决方案


添加编码字符串后(最后),您可以立即看到它包含换行符(\n),因此您必须指定ignoreUnknownCharacters选项

func base64Decoded(word: String) -> String? {
    guard let base64Data = Data(base64Encoded: word, options: .ignoreUnknownCharacters) else { return nil}
    return String(data: base64Data, encoding: .utf8)
}

推荐阅读