0

私はソーシャルメディアアプリケーションを完成させていましたが、アプリケーションの起動プロセス中に私のユーザーの "username"に関して一貫して同じエラーが発生しています次のView Controllerが起動しなくなり、クラッシュしてEXC_BAD_INSTRUCTIONと表示されます)。ソーシャルネットワークアプリで返品行にエラーが発生しました

私はプロフィール画像でそれを持っていたので、それはデータベースの問題かもしれないと思っていましたが、ユーザ名はデータベースに登録され、電子メールとパスワードを持つユーザーとして登録されています。

エラーがであるセクションのコード:

import Foundation 
import Firebase 
import FirebaseDatabase 

class Post { 

private var _username: String! 
private var _userImg: String! 
private var _postImg: String! 
private var _likes: Int! 
private var _postKey: String! 
private var _postRef: DatabaseReference! 

var username: String 
{ 
    return _username 
} 

var userImg: String 
{ 
    return _userImg 
} 

var postImg: String { 
    get { 
     return _postImg 
    } set { 
     _postImg = newValue 


    } 
} 

var likes: Int { 
    return _likes 
} 

var postKey: String { 
    return _postKey 
} 

init(imgURl: String, likes: Int, username: String, userImg: String) { 
    _likes = likes 
    _postImg = imgURl 
    _username = username 
    _userImg = userImg 
} 

    init(postKey: String, postData: Dictionary<String, AnyObject>){ 

    _postKey = postKey 

    if let username = postData["username"] as? String { 
     _username = username 
    } 

    if let userImg = postData["userImg"] as? String { 
     _userImg = userImg 
    } 

    if let postImg = postData["imageUrl"] as? String{ 
     _postImg = postImg 
     } 
    if let likes = postData["likes"] as? Int { 
     _likes = likes 
     } 
    _postRef = Database.database().reference().child("posts").child(_postKey) 

} 

func adjustLikes(addLikes: Bool) { 

    if addLikes { 

     _likes = likes + 1 
    } else { 

     _likes = likes - 1 
    } 

    _postRef.child("likes").setValue(_likes) 
} 

} 

エラーが発生した行:私は本当に問題は何ができるか困惑しています

return _username 

。私はすべてのIBOutletsを見て、新しいユーザーを削除して追加しました。助けていただければ幸いです。

答えて

0

あなたusername変数が変数_username:String!から値を返している計算読むだけプロパティです(強制開封された値手段が他のクラッシュnilをすることはできません)。あなたは、あなたの変数がnilでないことを確認する必要があります。

_usernameがnil-ではありません。

class Foo{ 

    var _username:String = "tushar" 
    var username: String 
     { 
       return _username 
     } 
} 

var object = Foo() 

print(object.username) 

例あなたの変数がnil付加価値を得ることができたとき:変数がクラッシュ

だことで値を持たない場合は

class Foo{ 

    var _username:String! 
    var username: String 
     { 
       print(_username) 
       return _username 
     } 
} 

var object = Foo() 
print(object.username) 

+0

ユーザーがサインアップするときに、ユーザー名に値を保持するためのコードが既に用意されています。 Firebaseでは、入力したユーザー名で作成したユーザーが表示されます。 – user8480321

+0

@ user8480321計算されたプロパティの前に値を出力していることをブレークポイントと印刷ステートメントでチェックしましたか? –

+0

あなたは、値がゼロでないことを保証するために書く必要のあるコードを表示してください。私は今非常に失われています – user8480321

0

init(postKey:postData:)コンストラクタでは、_usernameプロパティが設定されます。ただし、公開usernameプロパティは、オプションではないタイプのStringです。私の前提は、usernameゲッターがnilの値を強制的にアンラップしようとしているということです。

関連する問題