首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS Swift“找不到成员executeFetchRequest”

iOS Swift“找不到成员executeFetchRequest”
EN

Stack Overflow用户
提问于 2014-06-06 09:37:14
回答 2查看 2.9K关注 0票数 2

为了将一些现有的小代码移植到Swift,我遇到了一个小问题。我可以在目标C中做以下工作

代码语言:javascript
复制
NSMutablArray *myMutableArray = [NSMutableArray array];
myMutablArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error].mutableCopy;

然而,在我试图迅速尝试这一点时,我得到了“找不到executeFetchRequest成员”

代码语言:javascript
复制
class exampleTableViewController: UITableViewController {

  var managedObjectContext: NSManagedObjectContext? = nil
  var myMutableArray: NSMutableArray = NSMutablArray()

  override func viewWillAppear(animated: Bool) {        
      super.viewWillAppear(animated)

      var request = NSFetchRequest(entityName: "TestTable")
      var error: NSError? = nil

      self.myMutableArray = self.managedObjectContext!.executeFetchRequest(request, error: &error)       
   }
   ...
}

谁能帮我指出正确的方向吗?

非常感谢

编辑:粘贴在xcode中的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-06 11:02:00

这个错误有点误导人。

它的意思是“我不知道任何函数会返回可变数组”。

Swift是类型安全的,编译器热情地执行它。

typevar更改为NSArray,这是executeFetchRequest函数返回的内容。

代码语言:javascript
复制
class exampleTableViewController: UITableViewController {

    var managedObjectContext: NSManagedObjectContext? = nil
    var myArray: NSArray? = nil;

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        var request = NSFetchRequest(entityName: "TestTable")
        var error: NSError? = nil

        self.myArray = self.managedObjectContext!.executeFetchRequest(request, error: &error)
    }
}

如果需要可变数组,则需要执行显式强制转换。

代码语言:javascript
复制
let results = self.managedObjectContext!.executeFetchRequest(request, error: &error)

myMutableArray = NSMutableArray(array: results);
票数 3
EN

Stack Overflow用户

发布于 2014-06-06 10:24:27

在调用executeFetchRequest之前,不需要初始化数组,调用将返回数组并销毁已经创建的数组。

我没有看到您创建了错误,而且似乎您有一个“本地”managedObjectContext变量,但是您正在尝试引用self。尝试:

代码语言:javascript
复制
self.myMutableArray = managedObjectContext!.executeFetchRequest(request, error: &error)

假设在第二个代码块中发布的两行代码之间没有代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24078673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档