热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

输入plist数据到核心数据-Enteringplistdatatocoredata

Icurrentlyhaveaplistfilethatcontains27achievementsdataandimtryingtoenteritintothe

I currently have a plist file that contains 27 achievements data and i'm trying to enter it into the core data entity know as achievement as seen below

我目前有一个plist文件,其中包含27个成就数据,我正在尝试将其输入核心数据实体,称为成就,如下所示

func createAchievements() {

    let A:Achievement = NSEntityDescription.insertNewObject(forEntityName: "Achievement", into: CoreDatabaseContoller.getContext()) as! Achievement

    let filePath = Bundle.main.path(forResource: "Achievement", ofType: "plist")
    let Items = NSArray(contentsOfFile: filePath!) as! [[String:AnyObject]]

        for item in Items {

            A.theName = item["Name"] as! String
            A.theDescription = item["Description"] as! String
            A.theImage = item["Image"] as! String
            A.aAmount = item["Amount"] as! NSNumber
            A.aNeededAmount = item["NeededAmount"] as! NSNumber                  //DOESN'T WORK IT ONLY SHOWS OR PUTS IN THE LAST ONE.
            A.aStage = item["Stage"] as! NSNumber
            A.aReward = item["Reward"] as! NSNumber
            A.aHasBeenAchieved = item["HasBeenAchieved"] as! NSNumber
            A.theSearchName = item["SearchName"] as! String

            CoreDatabaseContoller.saveContext()

        }
}

But when I load up the game and the achievements menu part of the game that displays the achievements all the images and text that are supposed to be filled by core data are not there and the images are red Xs except the last achievement in the achievement menu which seems to be working properly as seen inn the picture below

但是当我加载游戏和显示成就的游戏的成就菜单部分时,应该由核心数据填充的所有图像和文本都不存在,并且除了成就菜单中的最后成就之外,图像是红色X这似乎正常工作如下图所示

enter image description here

I originally entered the data from the achievements through a switch system that looked horrible in my code as seen below and it worked not problem. But now for some reason when I try and enter it from a plist to core data it seems to not work

我最初通过一个在我的代码中看起来很糟糕的交换机系统从成就中输入数据,如下所示,它没有问题。但是现在由于某些原因,当我尝试从plist到核心数据输入它时,似乎无法正常工作

func giveDataForAchievements() {

func giveDataForAchievements(){

    if achievementsGenerated == false {

        for count in 1...24 {

            var aName = "None"
            var aDesc = "None"
            var aImage = "locked"
            var aAmount:NSNumber = 0
            var aNeededAmount:NSNumber = 1
            var aStage:NSNumber = 0
            var aReward:NSNumber = 0
            var aHasbeenAchieved:NSNumber = 0
            var aSearchName = ""

            switch count {

            case 1:

                aName = "DAILY"
                aDesc = "Daily Achievement"
                aImage = "locked"
                aAmount = 0
                aNeededAmount = 1
                aStage = 0
                aReward = 350
                aHasbeenAchieved = 0
                aSearchName = "Ach0"

            case 2:

                aName = "DAILY"
                aDesc = "Daily Achievement"
                aImage = "locked"
                aAmount = 0
                aNeededAmount = 1
                aStage = 0
                aReward = 350
                aHasbeenAchieved = 0
                aSearchName = "Ach1"

            case 3:

                aName = "DAILY"
                aDesc = "Daily Achievement"
                aImage = "locked"
                aAmount = 0
                aNeededAmount = 1
                aStage = 0
                aReward = 350
                aHasbeenAchieved = 0
                aSearchName = "Ach2"

            case 4:

                aName = "ROOKIE"
                aDesc = "Finish the tutorial level"
                aImage = "locked"
                aAmount = 0
                aNeededAmount = 1
                aStage = 2
                aReward = 350
                aHasbeenAchieved = 0
                aSearchName = "Ach3"


     createAchievements(aName: aName, Des: aDesc, Image: aImage, Amount: aAmount, Needed: aNeededAmount, Stage: aStage, Reward: aReward, BeenAchieved: aHasbeenAchieved, SearchName: aSearchName)

           // all the way to 27 

I am not sure how to fix this. Can anyone tell me what i'm doing wrong?

我不知道如何解决这个问题。谁能告诉我我做错了什么?

1 个解决方案

#1


1  

You are updating the same managed object multiple times. Move the line:

您正在多次更新同一个托管对象。移动线:

let A:Achievement = NSEntityDescription.insertNewObject(forEntityName: "Achievement", into: CoreDatabaseContoller.getContext()) as! Achievement

into the for loop. It will then create a new object for each Item.

进入for循环。然后它将为每个Item创建一个新对象。


推荐阅读
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射)
    提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射) ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 在C++程序中,文档A的每一行包含一个结构体数据,其中某些字段可能包含不同数量的数字。需要将这些结构体数据逐行读取并存储到向量中,随后不仅在控制台上显示,还要输出到新创建的文档B中。希望得到指导,感谢! ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • NOIP2000的单词接龙问题与常见的成语接龙游戏有异曲同工之妙。题目要求在给定的一组单词中,从指定的起始字母开始,构建最长的“单词链”。每个单词在链中最多可出现两次。本文将详细解析该题目的解法,并分享学习过程中的心得体会。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 解决UIBarButtonItem 边缘显示异常的问题分析与优化方案
    在iOS开发中,针对UIBarButtonItem边缘显示异常的问题进行了深入分析,并提出了一系列优化方案。通过自定义视图和调整布局约束,有效解决了按钮在不同设备和屏幕尺寸下的显示问题,提升了用户体验。具体方法包括使用AutoLayout进行动态调整,以及对按钮的内边距和外边距进行精细控制,确保按钮在各种场景下都能保持良好的视觉效果。 ... [详细]
  • 今天我开始学习Flutter,并在Android Studio 3.5.3中创建了一个新的Flutter项目。然而,在首次尝试运行时遇到了问题,Gradle任务 `assembleDebug` 执行失败,退出状态码为1。经过初步排查,发现可能是由于依赖项配置不当或Gradle版本不兼容导致的。为了解决这个问题,我计划检查项目的 `build.gradle` 文件,确保所有依赖项和插件版本都符合要求,并尝试更新Gradle版本。此外,还将验证环境变量配置是否正确,以确保开发环境的稳定性。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
author-avatar
嗯明天娶你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有