How to get all available emojis in an array in Swift? [duplicate]












0
















This question is an exact duplicate of:




  • Swift 3 display all apple emojis in a view

    1 answer




I want to be able to get an array of all the available emojis in Swift. What I mean by available is all the ones that are current accessable to the device. Like when Apple adds some new emojis, I would like to not have to change any code, and the new emojis just get added in the array with all the other ones.



If getting updated emojis is not possible, then how can I get all of the current emojis into an array (or perhaps a .plist file I can then load into an array) so I can access them in code?










share|improve this question













marked as duplicate by Samuel Liew Dec 4 '18 at 10:19


This question was marked as an exact duplicate of an existing question.




















    0
















    This question is an exact duplicate of:




    • Swift 3 display all apple emojis in a view

      1 answer




    I want to be able to get an array of all the available emojis in Swift. What I mean by available is all the ones that are current accessable to the device. Like when Apple adds some new emojis, I would like to not have to change any code, and the new emojis just get added in the array with all the other ones.



    If getting updated emojis is not possible, then how can I get all of the current emojis into an array (or perhaps a .plist file I can then load into an array) so I can access them in code?










    share|improve this question













    marked as duplicate by Samuel Liew Dec 4 '18 at 10:19


    This question was marked as an exact duplicate of an existing question.


















      0












      0








      0


      1







      This question is an exact duplicate of:




      • Swift 3 display all apple emojis in a view

        1 answer




      I want to be able to get an array of all the available emojis in Swift. What I mean by available is all the ones that are current accessable to the device. Like when Apple adds some new emojis, I would like to not have to change any code, and the new emojis just get added in the array with all the other ones.



      If getting updated emojis is not possible, then how can I get all of the current emojis into an array (or perhaps a .plist file I can then load into an array) so I can access them in code?










      share|improve this question















      This question is an exact duplicate of:




      • Swift 3 display all apple emojis in a view

        1 answer




      I want to be able to get an array of all the available emojis in Swift. What I mean by available is all the ones that are current accessable to the device. Like when Apple adds some new emojis, I would like to not have to change any code, and the new emojis just get added in the array with all the other ones.



      If getting updated emojis is not possible, then how can I get all of the current emojis into an array (or perhaps a .plist file I can then load into an array) so I can access them in code?





      This question is an exact duplicate of:




      • Swift 3 display all apple emojis in a view

        1 answer








      ios arrays swift






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 20 '18 at 7:38









      kanhaiyakanhaiya

      62




      62




      marked as duplicate by Samuel Liew Dec 4 '18 at 10:19


      This question was marked as an exact duplicate of an existing question.






      marked as duplicate by Samuel Liew Dec 4 '18 at 10:19


      This question was marked as an exact duplicate of an existing question.


























          1 Answer
          1






          active

          oldest

          votes


















          3














          This SO seems to provide the answer
          How to list (almost) all emojis in Swift for iOS 8 without using any form of lookup tables?



          for i in 0x1F601...0x1F64F {  
          let c = String(UnicodeScalar(i) ?? "-")
          print(c)
          }


          You should go beyond 1F64F,
          Find out if Character in String is emoji?



                  0x1F600...0x1F64F, // Emoticons
          8400...8447: // Combining Diacritical Marks for Symbols
          9100...9300, // Misc items
          0x2600...0x26FF, // Misc symbols
          0x2700...0x27BF, // Dingbats
          0xFE00...0xFE0F, // Variation Selectors
          0x1F018...0x1F270, // Various asian characters
          0x1F300...0x1F5FF, // Misc Symbols and Pictographs
          0x1F680...0x1F6FF, // Transport and Map
          0x1F1E6...0x1F1FF, // Regional country flags
          0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs
          65024...65039, // Variation selector


          However, you get some undefined (marked as ? at the end of ranges)
          See here to skip them
          Is there a way to know if an Emoji is supported in iOS?



          Note, while searching, found this interesting link to generate emoji flags based on country code
          www.timekl.com/blog/2017/08/31/swift-tricks-emoji-flags/



          That ends up with the following code



          func isEmoji(_ value: Int) -> Bool {  
          switch value {
          case 0x1F600...0x1F64F, // Emoticons
          0x1F300...0x1F5FF, // Misc Symbols and Pictographs
          0x1F680...0x1F6FF, // Transport and Map
          0x1F1E6...0x1F1FF, // Regional country flags
          0x2600...0x26FF, // Misc symbols 9728 - 9983
          0x2700...0x27BF, // Dingbats
          0xFE00...0xFE0F, // Variation Selectors
          0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs 129280 - 129535
          0x1F018...0x1F270, // Various asian characters 127000...127600
          65024...65039, // Variation selector
          9100...9300, // Misc items
          8400...8447: // Combining Diacritical Marks for Symbols
          return true

          default: return false
          }
          }




          extension Character {
          private static let refUnicodeSize: CGFloat = 8
          private static let refUnicodePng =
          Character("u{1fff}").png(ofSize: Character.refUnicodeSize)

          func png(ofSize fontSize: CGFloat) -> Data? {
          let attributes = [NSAttributedString.Key.font:
          UIFont.systemFont(ofSize: fontSize)]
          let charStr = "(self)" as NSString
          let size = charStr.size(withAttributes: attributes)

          UIGraphicsBeginImageContext(size)
          charStr.draw(at: CGPoint(x: 0,y :0), withAttributes: attributes)

          var png:Data? = nil
          if let charImage = UIGraphicsGetImageFromCurrentImageContext() {
          png = charImage.pngData()
          }

          UIGraphicsEndImageContext()
          return png
          }

          func unicodeAvailable() -> Bool {
          if let refUnicodePng = Character.refUnicodePng,
          let myPng = self.png(ofSize: Character.refUnicodeSize) {
          return refUnicodePng != myPng
          }
          return false
          }
          }

          for i in 8400...0x1F9FF where isEmoji(i) {
          if let scalar = UnicodeScalar(i) {
          let unicode = Character(scalar)
          if unicode.unicodeAvailable() {
          print(i, String(scalar))
          count += 1
          } else {
          notAvail += 1
          print(i)
          }
          } else {
          notCounted += 1
          }
          }

          print("Count", count, "Not counted", notCounted, "Not Avail", notAvail)





          share|improve this answer






























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            3














            This SO seems to provide the answer
            How to list (almost) all emojis in Swift for iOS 8 without using any form of lookup tables?



            for i in 0x1F601...0x1F64F {  
            let c = String(UnicodeScalar(i) ?? "-")
            print(c)
            }


            You should go beyond 1F64F,
            Find out if Character in String is emoji?



                    0x1F600...0x1F64F, // Emoticons
            8400...8447: // Combining Diacritical Marks for Symbols
            9100...9300, // Misc items
            0x2600...0x26FF, // Misc symbols
            0x2700...0x27BF, // Dingbats
            0xFE00...0xFE0F, // Variation Selectors
            0x1F018...0x1F270, // Various asian characters
            0x1F300...0x1F5FF, // Misc Symbols and Pictographs
            0x1F680...0x1F6FF, // Transport and Map
            0x1F1E6...0x1F1FF, // Regional country flags
            0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs
            65024...65039, // Variation selector


            However, you get some undefined (marked as ? at the end of ranges)
            See here to skip them
            Is there a way to know if an Emoji is supported in iOS?



            Note, while searching, found this interesting link to generate emoji flags based on country code
            www.timekl.com/blog/2017/08/31/swift-tricks-emoji-flags/



            That ends up with the following code



            func isEmoji(_ value: Int) -> Bool {  
            switch value {
            case 0x1F600...0x1F64F, // Emoticons
            0x1F300...0x1F5FF, // Misc Symbols and Pictographs
            0x1F680...0x1F6FF, // Transport and Map
            0x1F1E6...0x1F1FF, // Regional country flags
            0x2600...0x26FF, // Misc symbols 9728 - 9983
            0x2700...0x27BF, // Dingbats
            0xFE00...0xFE0F, // Variation Selectors
            0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs 129280 - 129535
            0x1F018...0x1F270, // Various asian characters 127000...127600
            65024...65039, // Variation selector
            9100...9300, // Misc items
            8400...8447: // Combining Diacritical Marks for Symbols
            return true

            default: return false
            }
            }




            extension Character {
            private static let refUnicodeSize: CGFloat = 8
            private static let refUnicodePng =
            Character("u{1fff}").png(ofSize: Character.refUnicodeSize)

            func png(ofSize fontSize: CGFloat) -> Data? {
            let attributes = [NSAttributedString.Key.font:
            UIFont.systemFont(ofSize: fontSize)]
            let charStr = "(self)" as NSString
            let size = charStr.size(withAttributes: attributes)

            UIGraphicsBeginImageContext(size)
            charStr.draw(at: CGPoint(x: 0,y :0), withAttributes: attributes)

            var png:Data? = nil
            if let charImage = UIGraphicsGetImageFromCurrentImageContext() {
            png = charImage.pngData()
            }

            UIGraphicsEndImageContext()
            return png
            }

            func unicodeAvailable() -> Bool {
            if let refUnicodePng = Character.refUnicodePng,
            let myPng = self.png(ofSize: Character.refUnicodeSize) {
            return refUnicodePng != myPng
            }
            return false
            }
            }

            for i in 8400...0x1F9FF where isEmoji(i) {
            if let scalar = UnicodeScalar(i) {
            let unicode = Character(scalar)
            if unicode.unicodeAvailable() {
            print(i, String(scalar))
            count += 1
            } else {
            notAvail += 1
            print(i)
            }
            } else {
            notCounted += 1
            }
            }

            print("Count", count, "Not counted", notCounted, "Not Avail", notAvail)





            share|improve this answer




























              3














              This SO seems to provide the answer
              How to list (almost) all emojis in Swift for iOS 8 without using any form of lookup tables?



              for i in 0x1F601...0x1F64F {  
              let c = String(UnicodeScalar(i) ?? "-")
              print(c)
              }


              You should go beyond 1F64F,
              Find out if Character in String is emoji?



                      0x1F600...0x1F64F, // Emoticons
              8400...8447: // Combining Diacritical Marks for Symbols
              9100...9300, // Misc items
              0x2600...0x26FF, // Misc symbols
              0x2700...0x27BF, // Dingbats
              0xFE00...0xFE0F, // Variation Selectors
              0x1F018...0x1F270, // Various asian characters
              0x1F300...0x1F5FF, // Misc Symbols and Pictographs
              0x1F680...0x1F6FF, // Transport and Map
              0x1F1E6...0x1F1FF, // Regional country flags
              0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs
              65024...65039, // Variation selector


              However, you get some undefined (marked as ? at the end of ranges)
              See here to skip them
              Is there a way to know if an Emoji is supported in iOS?



              Note, while searching, found this interesting link to generate emoji flags based on country code
              www.timekl.com/blog/2017/08/31/swift-tricks-emoji-flags/



              That ends up with the following code



              func isEmoji(_ value: Int) -> Bool {  
              switch value {
              case 0x1F600...0x1F64F, // Emoticons
              0x1F300...0x1F5FF, // Misc Symbols and Pictographs
              0x1F680...0x1F6FF, // Transport and Map
              0x1F1E6...0x1F1FF, // Regional country flags
              0x2600...0x26FF, // Misc symbols 9728 - 9983
              0x2700...0x27BF, // Dingbats
              0xFE00...0xFE0F, // Variation Selectors
              0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs 129280 - 129535
              0x1F018...0x1F270, // Various asian characters 127000...127600
              65024...65039, // Variation selector
              9100...9300, // Misc items
              8400...8447: // Combining Diacritical Marks for Symbols
              return true

              default: return false
              }
              }




              extension Character {
              private static let refUnicodeSize: CGFloat = 8
              private static let refUnicodePng =
              Character("u{1fff}").png(ofSize: Character.refUnicodeSize)

              func png(ofSize fontSize: CGFloat) -> Data? {
              let attributes = [NSAttributedString.Key.font:
              UIFont.systemFont(ofSize: fontSize)]
              let charStr = "(self)" as NSString
              let size = charStr.size(withAttributes: attributes)

              UIGraphicsBeginImageContext(size)
              charStr.draw(at: CGPoint(x: 0,y :0), withAttributes: attributes)

              var png:Data? = nil
              if let charImage = UIGraphicsGetImageFromCurrentImageContext() {
              png = charImage.pngData()
              }

              UIGraphicsEndImageContext()
              return png
              }

              func unicodeAvailable() -> Bool {
              if let refUnicodePng = Character.refUnicodePng,
              let myPng = self.png(ofSize: Character.refUnicodeSize) {
              return refUnicodePng != myPng
              }
              return false
              }
              }

              for i in 8400...0x1F9FF where isEmoji(i) {
              if let scalar = UnicodeScalar(i) {
              let unicode = Character(scalar)
              if unicode.unicodeAvailable() {
              print(i, String(scalar))
              count += 1
              } else {
              notAvail += 1
              print(i)
              }
              } else {
              notCounted += 1
              }
              }

              print("Count", count, "Not counted", notCounted, "Not Avail", notAvail)





              share|improve this answer


























                3












                3








                3







                This SO seems to provide the answer
                How to list (almost) all emojis in Swift for iOS 8 without using any form of lookup tables?



                for i in 0x1F601...0x1F64F {  
                let c = String(UnicodeScalar(i) ?? "-")
                print(c)
                }


                You should go beyond 1F64F,
                Find out if Character in String is emoji?



                        0x1F600...0x1F64F, // Emoticons
                8400...8447: // Combining Diacritical Marks for Symbols
                9100...9300, // Misc items
                0x2600...0x26FF, // Misc symbols
                0x2700...0x27BF, // Dingbats
                0xFE00...0xFE0F, // Variation Selectors
                0x1F018...0x1F270, // Various asian characters
                0x1F300...0x1F5FF, // Misc Symbols and Pictographs
                0x1F680...0x1F6FF, // Transport and Map
                0x1F1E6...0x1F1FF, // Regional country flags
                0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs
                65024...65039, // Variation selector


                However, you get some undefined (marked as ? at the end of ranges)
                See here to skip them
                Is there a way to know if an Emoji is supported in iOS?



                Note, while searching, found this interesting link to generate emoji flags based on country code
                www.timekl.com/blog/2017/08/31/swift-tricks-emoji-flags/



                That ends up with the following code



                func isEmoji(_ value: Int) -> Bool {  
                switch value {
                case 0x1F600...0x1F64F, // Emoticons
                0x1F300...0x1F5FF, // Misc Symbols and Pictographs
                0x1F680...0x1F6FF, // Transport and Map
                0x1F1E6...0x1F1FF, // Regional country flags
                0x2600...0x26FF, // Misc symbols 9728 - 9983
                0x2700...0x27BF, // Dingbats
                0xFE00...0xFE0F, // Variation Selectors
                0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs 129280 - 129535
                0x1F018...0x1F270, // Various asian characters 127000...127600
                65024...65039, // Variation selector
                9100...9300, // Misc items
                8400...8447: // Combining Diacritical Marks for Symbols
                return true

                default: return false
                }
                }




                extension Character {
                private static let refUnicodeSize: CGFloat = 8
                private static let refUnicodePng =
                Character("u{1fff}").png(ofSize: Character.refUnicodeSize)

                func png(ofSize fontSize: CGFloat) -> Data? {
                let attributes = [NSAttributedString.Key.font:
                UIFont.systemFont(ofSize: fontSize)]
                let charStr = "(self)" as NSString
                let size = charStr.size(withAttributes: attributes)

                UIGraphicsBeginImageContext(size)
                charStr.draw(at: CGPoint(x: 0,y :0), withAttributes: attributes)

                var png:Data? = nil
                if let charImage = UIGraphicsGetImageFromCurrentImageContext() {
                png = charImage.pngData()
                }

                UIGraphicsEndImageContext()
                return png
                }

                func unicodeAvailable() -> Bool {
                if let refUnicodePng = Character.refUnicodePng,
                let myPng = self.png(ofSize: Character.refUnicodeSize) {
                return refUnicodePng != myPng
                }
                return false
                }
                }

                for i in 8400...0x1F9FF where isEmoji(i) {
                if let scalar = UnicodeScalar(i) {
                let unicode = Character(scalar)
                if unicode.unicodeAvailable() {
                print(i, String(scalar))
                count += 1
                } else {
                notAvail += 1
                print(i)
                }
                } else {
                notCounted += 1
                }
                }

                print("Count", count, "Not counted", notCounted, "Not Avail", notAvail)





                share|improve this answer













                This SO seems to provide the answer
                How to list (almost) all emojis in Swift for iOS 8 without using any form of lookup tables?



                for i in 0x1F601...0x1F64F {  
                let c = String(UnicodeScalar(i) ?? "-")
                print(c)
                }


                You should go beyond 1F64F,
                Find out if Character in String is emoji?



                        0x1F600...0x1F64F, // Emoticons
                8400...8447: // Combining Diacritical Marks for Symbols
                9100...9300, // Misc items
                0x2600...0x26FF, // Misc symbols
                0x2700...0x27BF, // Dingbats
                0xFE00...0xFE0F, // Variation Selectors
                0x1F018...0x1F270, // Various asian characters
                0x1F300...0x1F5FF, // Misc Symbols and Pictographs
                0x1F680...0x1F6FF, // Transport and Map
                0x1F1E6...0x1F1FF, // Regional country flags
                0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs
                65024...65039, // Variation selector


                However, you get some undefined (marked as ? at the end of ranges)
                See here to skip them
                Is there a way to know if an Emoji is supported in iOS?



                Note, while searching, found this interesting link to generate emoji flags based on country code
                www.timekl.com/blog/2017/08/31/swift-tricks-emoji-flags/



                That ends up with the following code



                func isEmoji(_ value: Int) -> Bool {  
                switch value {
                case 0x1F600...0x1F64F, // Emoticons
                0x1F300...0x1F5FF, // Misc Symbols and Pictographs
                0x1F680...0x1F6FF, // Transport and Map
                0x1F1E6...0x1F1FF, // Regional country flags
                0x2600...0x26FF, // Misc symbols 9728 - 9983
                0x2700...0x27BF, // Dingbats
                0xFE00...0xFE0F, // Variation Selectors
                0x1F900...0x1F9FF, // Supplemental Symbols and Pictographs 129280 - 129535
                0x1F018...0x1F270, // Various asian characters 127000...127600
                65024...65039, // Variation selector
                9100...9300, // Misc items
                8400...8447: // Combining Diacritical Marks for Symbols
                return true

                default: return false
                }
                }




                extension Character {
                private static let refUnicodeSize: CGFloat = 8
                private static let refUnicodePng =
                Character("u{1fff}").png(ofSize: Character.refUnicodeSize)

                func png(ofSize fontSize: CGFloat) -> Data? {
                let attributes = [NSAttributedString.Key.font:
                UIFont.systemFont(ofSize: fontSize)]
                let charStr = "(self)" as NSString
                let size = charStr.size(withAttributes: attributes)

                UIGraphicsBeginImageContext(size)
                charStr.draw(at: CGPoint(x: 0,y :0), withAttributes: attributes)

                var png:Data? = nil
                if let charImage = UIGraphicsGetImageFromCurrentImageContext() {
                png = charImage.pngData()
                }

                UIGraphicsEndImageContext()
                return png
                }

                func unicodeAvailable() -> Bool {
                if let refUnicodePng = Character.refUnicodePng,
                let myPng = self.png(ofSize: Character.refUnicodeSize) {
                return refUnicodePng != myPng
                }
                return false
                }
                }

                for i in 8400...0x1F9FF where isEmoji(i) {
                if let scalar = UnicodeScalar(i) {
                let unicode = Character(scalar)
                if unicode.unicodeAvailable() {
                print(i, String(scalar))
                count += 1
                } else {
                notAvail += 1
                print(i)
                }
                } else {
                notCounted += 1
                }
                }

                print("Count", count, "Not counted", notCounted, "Not Avail", notAvail)






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 20 '18 at 7:54









                Choudhary KanhaiyaChoudhary Kanhaiya

                463




                463















                    Popular posts from this blog

                    Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

                    Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

                    A Topological Invariant for $pi_3(U(n))$