创建计数器以跟踪为核心数据对象选择UITableViewcell的次数

时间:2015-09-04 14:06:59

标签: swift core-data

处理从桌面视图跟踪用户选择的应用程序,以及他们选择特定对象的最大限制为2的次数,如果在弹出数字2后选择了单元格,则重置为0。我也试图将对象总数限制为30.我的核心数据实体中有2个与此相关的属性。 numberelected和deckCardCount选择的数字直接与对象相关,deckCardCount是存储的对象的总和。

我不确定这是否是解决此问题的最佳方式,因为我也想到了可能限制只能在呈现对象的视图控制器中。我需要一点方向和一些一般的帮助。目前我创建的计数器似乎并没有起作用。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var myDeckCards: DeckCards?
    let listed = frc.objectAtIndexPath(indexPath) as! Cards
    // check: is there already a DeckCards object for this Card and this Deck?
    let deckCardsSet = listed.cardselections
    println("The set of DeckCards for that Card is \(deckCardsSet.count)")
    for eachDeckCard in listed.cardselections {
        let myDeckCard = eachDeckCard as! DeckCards
        if myDeckCard.cardsstored == passedDeckObject {
            // There is already a DeckCard object for this Card and currentDeck
            myDeckCards = eachDeckCard as? DeckCards
        }
    }
    if myDeckCards == nil {
        // There is no DeckCard object for this Card and currentDeck
        // So create one...
        myDeckCards = NSEntityDescription.insertNewObjectForEntityForName("DeckCards", inManagedObjectContext: managedObjectContext!) as? DeckCards
        myDeckCards!.cardsselected = listed
        myDeckCards!.cardsstored = passedDeckObject!
    }
    // your code to determine numberSelected here; I'll assume 2!
    var cardCount = 0
    func addCards() {
        if cardCount == 0 {
            cardCount++
        } else {
            if cardCount == 1 {
                cardCount++
            } else {
                if cardCount == 2 {
                cardCount == 0
            }
            }
        }
    }
    addCards()
    println(cardCount)

    myDeckCards!.numberSelected = cardCount
    managedObjectContext?.save(nil)

}

1 个答案:

答案 0 :(得分:1)

为什么你有一个引用总数的属性?这没有任何意义。保留一个变量来跟踪总数。

为什么使用复数来描述您的托管对象?为什么卡片的名称为$var - 重构为单数!

最后,你的添加功能非常冗长。这应该像

一样简单
Cards