如何安全地打开我的coredata对象

时间:2016-09-09 22:25:54

标签: ios swift core-data

嘿我把这些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?
}

1 个答案:

答案 0 :(得分:1)

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

对于切换部分,您可以按case value? - >匹配如果msg.fromID不是可选的,则解析为true。 对于friend.id,我想你可能需要在交换机外检查它。也许其他人可以为friend.id提供更好的解决方案。