2016-11-16 9 views
0

私はスウィフト3、JSONSerializationクラスを使用してJSONウェブトークンを作成しようとXcode 8.1が、私のプロジェクトがエラーでビルドに失敗しています:なぜ私のがBase64での辞書を変換:エラーセグメンテーションフォールト11

Command failed due to signal: Segmentation fault 11.

誰もが知っていますコードが正しくありませんか?

このコードをプロジェクトからコメントアウトすると、プロジェクトがビルドされます。

let customerError = "Custom Error" 
enum headerError: Error { 
case customerError 
} 

let headerJWT: [Dictionary] = ["alg":"RS256","typ":"JWT"] 

//Convert headerJWT to Data 
do { 
    let headerJWTData: Data = try? JSONSerialization.data(withJSONObject:headerJWT,options: JSONSerialization.WritingOptions.prettyPrinted) 
} catch headerError.customerError { 
     print("could not make data") 
} 

//Convert headerData to string utf8 
do { 
    let headerJWTString = try String(data: headerJWTData,encoding:String.Encoding.utf8) as! String 
} catch { 
    print("string could not be created") 
} 

//Convert headerJWTString to base64EncodedString 
do { 
    let headerJWTBase64 = try Data(headerJWTString.utf8).base64EncodedString() 
} catch { 
"base64 could not be created" 
} 

答えて

0

あなたがJSONSerializationを使用してからDataを作成したら、単純にbase64でエンコードされた文字列を取得するためにDataからメソッドを使用します。

let headerJWT: [Dictionary] = ["alg":"RS256","typ":"JWT"] 

do { 
    let headerJWTData: Data = try? JSONSerialization.data(withJSONObject:headerJWT,options: JSONSerialization.WritingOptions.prettyPrinted) 
    let headerJWTBase64 = headerJWTData.base64EncodedString() 
} catch headerError.customerError { 
    print("could not make data") 
} 

はあなたがであることをbase64文字列を必要とするどのような形式に応じて、base64EncodedString()に異なるオプションを渡すことができます。