2016-09-09 8 views
0

ねえ私は安全にアンラップしようとしているswitch文にこれらのcoredataオブジェクトを持っていますが、このシナリオではどのように行うのか分かりません。私はスイッチ部のために安全にmsg.fromID!friend!.id!私のcoredataオブジェクトを安全にアンラップする方法

var friend: Friend? 
extension Friend { 
@NSManaged var id: String? 
} 

extension Mesages { 
@NSManaged var fromID: String? 
@NSManaged var text: String? 
} 

答えて

1
if (friend?.id) != nil { 
     switch (msg.fromID) { 
     case(friend!.id!)? : 
      _ = friend!.id 
     default : 
      _ = "FBid" 
     } 
    } 

のラップを解除する必要が

override func collectionView(collectionView: JSQMessagesCollectionView!, messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData! { 
    let msg : Mesages = fetchedResultsControler.objectAtIndexPath(indexPath) as! Mesages 
    switch (msg.fromID!) { 

    case(friend!.id!) : let messageData = JSQMessage(senderId: friend!.id!, displayName: friend!.id!, text: msg.text) 
    return messageData 

    default : 
     let messageData = JSQMessage(senderId: userdefaults.objectForKey("FBid") as! String, displayName: userdefaults.objectForKey("FBid") as! String, text: msg.text) 
    return messageData 
    } 
} 

、あなたはcase value?で一致させることができます - > msg.fromIDがオプションでない場合、これはtrueに解決されます。 friend.idについては、おそらくスイッチ外でチェックする必要があると思います。他の人がfriend.idの方が良い解決策を提供するかもしれません。

関連する問題