为了将一些现有的小代码移植到Swift,我遇到了一个小问题。我可以在目标C中做以下工作
NSMutablArray *myMutableArray = [NSMutableArray array];
myMutablArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error].mutableCopy;然而,在我试图迅速尝试这一点时,我得到了“找不到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中的代码。
发布于 2014-06-06 11:02:00
这个错误有点误导人。
它的意思是“我不知道任何函数会返回可变数组”。
Swift是类型安全的,编译器热情地执行它。
将type的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)
}
}如果需要可变数组,则需要执行显式强制转换。
let results = self.managedObjectContext!.executeFetchRequest(request, error: &error)
myMutableArray = NSMutableArray(array: results);发布于 2014-06-06 10:24:27
在调用executeFetchRequest之前,不需要初始化数组,调用将返回数组并销毁已经创建的数组。
我没有看到您创建了错误,而且似乎您有一个“本地”managedObjectContext变量,但是您正在尝试引用self。尝试:
self.myMutableArray = managedObjectContext!.executeFetchRequest(request, error: &error)假设在第二个代码块中发布的两行代码之间没有代码。
https://stackoverflow.com/questions/24078673
复制相似问题