试图将一些小的现有代码移植到Swift我遇到了一些问题。 我可以在Objective-C
中执行以下操作NSMutablArray *myMutableArray = [NSMutableArray array];
myMutablArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error].mutableCopy;
然而,在我试图在swift中尝试这个时,我得到'找不到成员executeFetchRequest'
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中查找。
答案 0 :(得分:3)
该错误有点误导。
完整地说“我不知道任何返回可变数组的函数”
Swift是类型安全的,编译器热情地执行它。
将type
的{{1}}更改为var
,这是函数NSArray
返回的内容。
executeFetchRequest
如果您想要一个可变数组,则需要进行显式转换
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)
}
}
答案 1 :(得分:1)
在调用executeFetchRequest之前,不需要初始化数组,调用将返回一个数组并销毁你已创建的数组。
我没有看到您创建的错误,看起来您有一个“本地”的managedObjectContext变量,但您尝试引用self。尝试:
self.myMutableArray = managedObjectContext!.executeFetchRequest(request, error: &error)
假设您在第二个代码块中发布的两行之间没有代码。