SwiftUI CoreData - 存储获取请求数据

Posted

技术标签:

【中文标题】SwiftUI CoreData - 存储获取请求数据【英文标题】:SwiftUI CoreData - Store Fetch Request Data 【发布时间】:2019-12-30 08:57:35 【问题描述】:

我在使用从核心数据实体获取数据时遇到了真正的困难。 我需要做的就是获取数据并在我的代码中使用。 我的方法可能是错误的,因此很困难。 我希望得到数据并存储到一个数组中

我有一个处理数据的函数,但我所能做的就是在视图中显示结果。 我想将数据存储在一个数组中,我试图在其中 EmptyArray.append[newElement] 错误:代码是 dictionaryWord.append(word.englishName) 并且错误是 表达式类型不明确,没有更多上下文

//Game Play
struct gamePlay: View 

    //Set CoreData environment
    @Environment(\.managedObjectContext) var managedObjectContext
    @FetchRequest(entity: Dictionary.entity(), sortDescriptors: []) var dictionary: FetchedResults<Dictionary>


    //Variables for Game Play
    @State private var dictionaryWord: [String] = []
    @State private var correctAnswer = Int.random(in: 0...2)





    //Function to retrieve records from CoreData
    func processListPicture() -> some View 



    NavigationView 


        VStack 

                List(dictionary,id: \.self)  word in

                            HStack 
                                Text(word.englishName)
                                Image(word.imageName)
                                    .resizable()
                                    .frame(width: 50, height: 50)
                                    .scaledToFit()
                                Text("- Urhobo: \(word.urhoboName)")


                            


                //End of ForEach / List
        


    .navigationBarTitle(Text("English Word Translator"),displayMode: .inline)


    //End of Function

【问题讨论】:

我刚刚做了更多的阅读,并意识到 SwiftUI 中的 ForEach 与我在 UIKit 中使用它的方式完全不同。如果有人可以帮助我尝试将我的结果从 CoreData ini 的检索结果转换为空数组,那将会有所帮助。我的目标是洗牌阵列并为小型游戏执行随机输出。我已经开始工作的游戏,带有静态数组列表中的元素列表。提前致谢 你能更好地格式化你的问题吗?目前很难知道代码中的问题出在哪里。 对不起,我没有让自己更清楚。我会再试一次。我有包含在 CoreData 中的数据。我能够检索数据,但在列表视图中。我需要将 Fetch Request 的结果存储到一个数组中,例如一个空数组。我希望我已经让自己更清楚了。谢谢 【参考方案1】:

如果我理解您的问题,您正在尝试将 FetchedResults(称为“字典”)转换为一个数组,其中 Result 是一个名为 Dictionary 的 CoreData 实体。

要洗牌,你可以这样做:

let shuffledDictionaries: [Dictionary] = dictionary.shuffled()

如果您想保留原始订单:

let dictionaries: [Dictionary] = dictionary.map  $0 

或者如果您想要任何特定的订单:

let sortedDictionaries: [Dictionary] = dictionary.sorted(by:  ... )

【讨论】:

以上是关于SwiftUI CoreData - 存储获取请求数据的主要内容,如果未能解决你的问题,请参考以下文章

来自先前选择器的选择器值 - CoreData/SwiftUI

获取 SwiftUI CoreData 关系

过滤后的 SwiftUI CoreData 列表中的 Sum 属性

使用 SwiftUI ForEach 从 NSOrderedSet 获取字符串值

如何在 SwiftUI 中从 FetchedResults (CoreData) 中获取 NSOrderedSet

如何将 SwiftUI 中的颜色类型存储到 CoreData 中?