Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Tableview选择存储到核心数据实体_Swift_Core Data - Fatal编程技术网

Swift Tableview选择存储到核心数据实体

Swift Tableview选择存储到核心数据实体,swift,core-data,Swift,Core Data,我目前正在开发一个应用程序,向用户提供一个项目列表,供用户选择。我希望将这些选择存储到核心数据中,因为它将在多个不同的表视图中使用 现在,我已经设置了核心数据模型,以接收选择的布尔值以及选择的数量。我对如何做到这一点有点迷茫,因为我能找到的所有参考资料都是swift之前的,swift是我目前阅读的唯一语言 为了进一步了解,我有一个带有布尔属性和整数属性的实体设置来确定选择和选择的数量 func tableView(tableView: UITableView, didDeselectRowAtI

我目前正在开发一个应用程序,向用户提供一个项目列表,供用户选择。我希望将这些选择存储到核心数据中,因为它将在多个不同的表视图中使用

现在,我已经设置了核心数据模型,以接收选择的布尔值以及选择的数量。我对如何做到这一点有点迷茫,因为我能找到的所有参考资料都是swift之前的,swift是我目前阅读的唯一语言

为了进一步了解,我有一个带有布尔属性和整数属性的实体设置来确定选择和选择的数量

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
    let listed = frc.objectAtIndexPath(indexPath) as! Cards
    let indexPath = cardsListed.indexPathForSelectedRow();
    let currentCell = cardsListed.cellForRowAtIndexPath(indexPath!) as UITableViewCell?
    DeckCards.setValue(true, forKey: "cardsSelected")
    managedObjectContext?.save(nil)
}
我正在考虑使用复选标记来显示哪些项目将被保存给用户……事实上,这是我想要的方式,没有太大变化,因为我仍然找不到这样做的快速示例。 以下是我的核心数据模型的图片,以便更好地理解:
[

我认为,考虑到评论中添加的信息,您需要稍微修改您的模型:每个
DeckCards
对象应该只有一张与其相关的
卡,即
DeckCards
实体上选择的
卡应该是“对一”。这是因为所选的属性
卡片
和所选的属性
数字
与一张特定的
卡片
,而不是一组卡片相关。相反的关系(
卡片
实体上的
卡片选择
)应该是“对多”:每个卡片对象可以与许多
DeckCards
对象相关

此外,我认为
DeckCards
cardsSelected
属性将是多余的,可以删除:如果选择了一张卡(对于特定的卡组),将有一个与之相关的
DeckCards
对象。如果没有选择,将没有与之相关的
DeckCards
对象

假设用户选择或创建一个
Deck
对象,我们称之为
currentDeck
,然后从表视图中选择要在该
Deck
中使用的卡。在
表视图中:didSelectRowAtIndexPath:
方法中,您创建(或更新)所选卡片和卡片组的
DeckCards
对象。不确定如何确定
numberSelected
,可能是使用警报控制器还是进一步查看控制器

类似这样的情况(顺便说一下,请注意,在问题的代码中,您使用的是“didDeselectRow…”而不是“didSelectRow…”):

(上面的代码可能需要一些调整才能正确地投射和展开选项,但我希望您能理解要点)


当要显示为给定卡片组选择的卡片的表视图时:
currentDeck.cardsselected
将为您提供相应的
DeckCards
对象集。或者,您可以使用谓词获取
DeckCards
对象,以将每个
DeckCar的结果限制为正确的
卡片组ds
对象您可以使用
卡片Selected.name
(etc)来确定相应卡片的名称(etc).

我认为,考虑到评论中添加的信息,您需要稍微修改您的模型:每个
DeckCards
对象应该只有一张与其相关的
卡,即
DeckCards
实体上选择的
卡应该是“对一”。这是因为所选的属性
卡片
和所选的属性
数字
与一张特定的
卡片
,而不是一组卡片相关。相反的关系(
卡片
实体上的
卡片选择
)应该是“对多”:每个卡片对象可以与许多
DeckCards
对象相关

此外,我认为
DeckCards
cardsSelected
属性将是多余的,可以删除:如果选择了一张卡(对于特定的卡组),将有一个与之相关的
DeckCards
对象。如果没有选择,将没有与之相关的
DeckCards
对象

假设用户选择或创建一个
Deck
对象,我们称之为
currentDeck
,然后从表视图中选择要在该
Deck
中使用的卡。在
表视图中:didSelectRowAtIndexPath:
方法中,您创建(或更新)所选卡片和卡片组的
DeckCards
对象。不确定如何确定
numberSelected
,可能是使用警报控制器还是进一步查看控制器

类似这样的情况(顺便说一下,请注意,在问题的代码中,您使用的是“didDeselectRow…”而不是“didSelectRow…”):

(上面的代码可能需要一些调整才能正确地投射和展开选项,但我希望您能理解要点)


当要显示为给定卡片组选择的卡片的表视图时:
currentDeck.cardsselected
将为您提供相应的
DeckCards
对象集。或者,您可以使用谓词获取
DeckCards
对象,以将每个
DeckCar的结果限制为正确的
卡片组ds
对象您可以使用
卡片Selected.name
(etc)来确定相应卡片的名称(etc).

谢谢编辑Tom!对不起,我的编辑技能不好,我应该比平时更正式地对待我的游戏伙伴。任何人都可以帮助我将用户从tableview中选择的内容永久保存到核心数据中,不管是布尔值还是其他值。你能再解释一下你的模型吗?从外观上看,你的table v视图中使用FRC填充了Cards对象,但您正在另一个对象(DeckCards)上设置布尔属性。DeckCards是什么实体类型,以及它与卡片的关系如何?DeckCards是一个包含两个属性的实体一个cardSelection属性是布尔值,另一个cardQuantity属性是
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var myDeckCard : DeckCards?
    let listed = frc.objectAtIndexPath(indexPath) as! Cards
    // check: is there already a DeckCards object for this Card and this Deck?
    for eachDeckCard in listed.cardselections {
        if eachDeckCard.deckcomplete == currentDeck {
            // There is already a DeckCard object for this Card and currentDeck
            myDeckCard = eachDeckCard
        }
    }
    if myDeckCard == nil {
        // There is no DeckCard object for this Card and currentDeck
        // So create one...
        myDeckCard = NSEntityDescription.insertNewObjectForEntityForName("DeckCards", inManagedObjectContext: managedObjectContext!)
        myDeckCard.cardsselected = listed
        myDeckCard.deckcomplete = currentDeck
    }
    // your code to determine numberSelected here; I'll assume 2!
    myDeckCard.numberSelected = 2
    managedObjectContext?.save(nil)
}