web-dev-qa-db-ja.com

Swift string?に絵文字を含める方法

ここ は、iOSの顔文字とそのコードを参照する非常に優れた記事です。例えば ​​\ue008小型カメラ用。

私は自分のコードでこれを試しました:

var myText: String = "\ue008"

これはxCodeでは受け入れられません。含める方法は?

17
Cherif

Swift documentation:

let dollarSign = "\u{24}"        // $,  Unicode scalar U+0024
let blackHeart = "\u{2665}"      // ♥,  Unicode scalar U+2665
let sparklingHeart = "\u{1F496}" // ????, Unicode scalar U+1F496
17
Greg

あなたが達成しようとしていることを理解している場合:

XCodeで「ctrl + cmd + space」を押します。 「ハート」絵文字の使用例

cell.textLabel?.text = "❤️" + " \(liker) liked \(userBeingliked)'s photo"
36
John Doe

Unicode定数はまったく必要ありません。文字ビューアを使用して、文字を直接入力するだけです。 ????

let sparklingHeart = "????"
10
gnasher729

1 Unicodeのデコード:

extension String {
    var decodeEmoji: String{
        let data = self.data(using: String.Encoding.utf8);
        let decodedStr = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue)
        if let str = decodedStr{
            return str as String
        }
        return self
    }
}

使用法

let decodedString = yourString.decodeEmoji

2 Unicodeのエンコード:

extension String {
    var encodeEmoji: String{
        if let encodeStr = NSString(cString: self.cString(using: .nonLossyASCII)!, encoding: String.Encoding.utf8.rawValue){
            return encodeStr as String
        }
        return self
    }
}

使用法

let encodedString = yourString.encodeEmoji
6
Lijith Vipin

上記のGregが投稿したように、OSxキャラクタービューアを使用してSwiftに絵文字を直接入力できます。キャラクタービューアはデフォルトで無効になっています。有効にする方法は次のとおりです。

システム環境設定>言語と地域>キーボード環境設定>キーボードに移動し、キーボード、絵文字、記号ビューアを表示をチェックしますメニューバー。オンにすると、Wifiおよび日付/時刻アイコンの隣の右上のメニューバーからキャラクタービューアーを開くことができます。

5
Peter Coyle

⌘ ^ Spaceを使用して、絵文字を直接挿入できます。

または、グレッグの答えに基づいて:

var myText: String = "\u{e008}"
4
Chris Slowik

hex "0x1F52D"から実際の絵文字へ

let c = 0x1F602

次のステップは、HexからUint32を取得する可能性があります

let intEmoji = UnicodeScalar(c!).value

これから、次のようなことができます

titleLabel.text = String(UnicodeScalar(intEmoji)!)

ここに「????」があります

16進数の範囲でも動作します

let emojiRanges = [
            0x1F600...0x1F636,
            0x1F645...0x1F64F,
            0x1F910...0x1F91F,
            0x1F30D...0x1F52D
        ]

        for range in emojiRanges {
            for i in range {
                let c = UnicodeScalar(i)!.value
                data.append(c)
            }
        }

たとえば、16進数の範囲から複数のUInt32を取得するには

0
Mehdi S.