2016-07-12 14 views
0

を削除し、私は、Webサービスへのいくつかのparamsを渡す必要がありますが、オプションはまた、彼らと一緒に来ているオプションの文字列形式の辞書

if let birthYear = objPet?.birthYear { 
     petDict = ["name": (objPet!.name!), 
        "birth_year": birthYear, 
        "gender": 1, 
        "breed": "test"] 
    } 

petDict

のコンソール
{ 
    "birth_year" = "Optional(\"2000\")"; 
    breed = test; 
    gender = 1; 
    name = 2323; 
} 

私は= "birth_year" をしたいです"2000"。私はどうすればそれをすることができます。

if let pet = objPet { 
    if let birthYear = pet.birthYear { 
     petDict = ["name": (pet.name!), 
        "birth_year": birthYear, 
        "gender": 1, 
        "breed": "test"] 
    } 
} 

編集を支援する必要があります:

クラス

class Pet: NSObject { 
    var name : String? 
    var birthYear : String? 
    var birthMonth : String? 
    var gender : String? 
    var breed : String? 
} 
+1

完全にアンラップされていないため、ダブルオプションをどこかに置いているようです。 – Sulthan

+0

'objPet?。birthyear'の宣言方法を教えてください。 – Moritz

+0

** birthYear = objPet?.birthYear as **のように条件を変更します。文字列{**。これは役に立ちます。 – x4h1d

答えて

0

あなたの問題のISN pet.nameのラップを解除すべきです」どのようにアンラップしているのですか?birthYear。あなたの問題は、プロパティのPetオブジェクトに格納されているStringが文字通り"Optional(2000)"であることです。

問題の原因が間違っています。最初にPetオブジェクトを作成するコードを見る必要があります。

私が遊び場にあなたの問題を再作成するには、以下のなかった:あなたはobjPet?.birthYear = "\(year!)"objPet?.birthYear = "\(year)"を変更する場合は、"Optional"が消える

{ 
    "birth_year" = "Optional(2000)"; 
    breed = test; 
    gender = 1; 
    name = Fido; 
} 

class Pet: NSObject { 
    var name : String? 
    var birthYear : String? 
    var birthMonth : String? 
    var gender : String? 
    var breed : String? 
} 

let objPet: Pet? = Pet() 

objPet?.name = "Fido" 

let year: Int? = 2000 
objPet?.birthYear = "\(year)" // you have something like this somewhere 

if let birthYear = objPet?.birthYear { 
    let petDict = ["name": (objPet!.name!), 
       "birth_year": birthYear, 
       "gender": 1, 
       "breed": "test"] 
    print(petDict) 
} 

出力を。これは、Stringがオブジェクトに格納されていて、petDictを作成するときにアンラッピングする方法が問題ではないことを示しています。

+1

ありがとう –

0

にそれを変更するあなたはおそらく安全にも

+4

「クラッシュ演算子」である '!'を使用しないでください。代わりに、 'if let'や' guard 'のように、常に安全なアンラッピングを使用してください。 – Moritz

+1

正解、私のアンカーを編集しました – Henningsson