2017-03-24 3 views
1

これは初心者の質問ですが、私はstackoverflowまたはgoogleで答えを見つけることができません。Xcodeの警告 - 変数が突然変更されていません

私はSwift 3言語でプロジェクトを書いています。ここに私のモデルクラスは次のとおりです。

class VKUserProfile: NSObject { 
    var userId: NSNumber? 
    var userName: String? 
    var userEmail: String? 
    var userMobilePhone: String? 
    var userPictureUrl: URL? 
} 

その後、私は別のクラスでそれを使用します。

private func convert(user: Dictionary<String, Any>) -> VKUserProfile { 
    var currentUser: VKUserProfile = VKUserProfile() 
    currentUser.userId = user["id"] as? NSNumber 
    return currentUser 
} 

Xcodeはライン ":VKUserProfile = VKUserProfile()VaRのCurrentUserに" の私を警告します。しかし、私はそれを "currentUser:VKUserProfile = VKUserProfile()"に変更すると、プロパティを設定できません(オブジェクトは空です)。だから誰かが私にこのプロセスを説明することができます、なぜXcodeは警告し、私はこれを修正することができます。

UPDATE:ここ があるCurrentUserが聞かせているCurrentUserに変数のスクリーンショットです:

let

そしてあるCurrentUserがVARであるとき、これはCurrentUserに変数のスクリーンショットです:

enter image description here は、事前にありがとうございます!

+0

あなたは 'let'を使う必要があります。それはあなたの直ちの問題を解決します。ここで、「私はどんなプロパティも設定できません」という意味を明確にします。 – rmaddy

+0

@rmaddy私は、 "currentUser:VKUserProfile = VKUserProfile()"と入力し、 "currentUser.userId = user [" id "]?NSNumber"のような変数を設定すると、currentUserはまだ空です。変数が設定されていません。 currentUserに格納されているデータはありません。私はこのオブジェクトを私のUIViewControllerに渡し、それを使用することはできません(currentUserにはデータがないため)。 –

+1

'user'には与えられたキーの値があり、その値は与えられた型のものですか? 'let/var'を使うのではなく、プロパティを設定することで、あなたの質問を本当に編集する必要があります。 – rmaddy

答えて

3

使用するとき、それはようです:

var currentUser = VKUserProfile() 

あなたのコードの残りの部分は正常にcurrentUserに埋め、あなたがcurrentUserを印刷するときに値を見ることができます。

ただし、実際にcurrentUserを再割り当てすることはないので、varを使用すると警告が表示されます。

varletに正当に変更し、それ以外の変更は行っていません。しかし、currentUserを印刷すると、質問に投稿したスクリーンショットに示すように、varを使用したときと同じ出力が表示されません。

これはXcodeのデバッガに問題があるようです。

currentUserという個々のプロパティを印刷すると、予想される出力が示されます。

最後に、これはXcodeのデバッガのバグに過ぎません。 varletに変更しても、コードは正常です。

+0

ありがとうございました! –

関連する問題