嘿,我在一个switch语句中有这些coredata对象,我正试图安全地展开它们,但是我不知道在这个场景中如何做到这一点。

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
    }
}

我需要安全地打开msg.fromID!friend!.id!
var friend: Friend?
extension Friend {
@NSManaged var id: String?
}

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

最佳答案

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

对于switch部分,如果msg.fromID不是可选的,则可以通过case value?->进行匹配。
对于friend.id,我想您可能需要在交换机外检查它。也许其他人能给你一个更好的解决方案。

关于ios - 如何安全地解包我的coredata对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39420519/

10-10 17:50