2017-04-02 56 views
2

我的类中有一种从coredata中提取数据的方法。但我有一个问题:我需要将结果转换为数组,因为那样我就不得不在另一个类中使用该数组。iOS:将coredata获取到数组并传递给另一个类的结果

的方法是:

func loadQuestion() -> NSArray{ 
     let fetchRequest: NSFetchRequest<Questions> = Questions.fetchRequest() 

     do { 
      let array = try self.context.fetch(fetchRequest) as NSArray 
      guard array.count > 0 else { print("[EHY!] Non ci sono elementi da leggere "); return array } 

      return array 
     } catch let errore { 
      print("error FetchRequest") 
     } 

     return list 
    } 

我无法弄清楚如何将变量数组转换?

结果(错误)

enter image description here

编辑:我写这篇文章,因为我想要的结果转换的读取到 一个数组,这样你就可以切换到另一个类

+0

@TusharSharma我在另一个类中定义一样的数组:'VAR数组:NSArray的= []'因为我想阵列从类通过其中I'loadQuestion()'函数到另一个类。 – Taprolano

+0

然后我写了(在我想要数组的类中)'array = loadQuestion()CoreDataController。共享“ 获取该数组,然后”打印(数组)“打印内容。问题是它不打印确切的数据,但记忆和错误 – Taprolano

+0

[iOS Core Data:将获取请求的结果转换为数组]的可能重复(http://stackoverflow.com/questions/35686273/ios- core-data-convert-fetch-request-to-an-array) – 2017-04-02 20:36:41

回答

2

fetch返回(可选)数组,因此您只需从函数中返回该数组即可。由于fetchthrows您的函数应该是throw或至少返回一个可选项,因为提取可能会失败。

在Swift中很少需要使用NSArray;一个正确类型的Swift数组将使你的代码更清晰和更安全。由于Swift中的CoreData支持泛型,fetch将根据您的NSFetchRequest自动返回适当的数组类型。即使你从Objective-C中调用这个函数,最好让编译器将Swift数组桥接到NSArray

最后,你错误地使用了guard;如果它有0个项目,则尝试返回array,否则返回一些变量list,该变量未在您显示的代码中声明。

func loadQuestion() -> [Questions]? { 
    let fetchRequest: NSFetchRequest<Questions> = Questions.fetchRequest() 

    do { 
     let array = try self.context.fetch(fetchRequest) as [Questions] 
     return array 
    } catch let errore { 
     print("error FetchRequest \(errore)") 
    } 

    return nil 
} 
+0

哇...............工作! – Taprolano

相关问题