我真不明白为什么我的地图方法出错了。错误是调用中的额外参数。
这样做是可行的:
let url1 = NSURL(string: "123");
let url2 = NSURL(string: "456");
NSManagedObjectModel(contentsOfURL:url1!);当我试图用地图表示NSURL数组时,
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
(url) -> NSURL in
NSManagedObjectModel(contentsOfURL: url!); // errors here
}
return newData
}因此,在第一个片段中,我知道我可以使用该方法调用创建一个NSManagedObjectModel。但是,当我试图对一个NSURL数组使用map函数时,它会在调用中给出一个额外的参数错误。有什么想法吗?提前谢谢。
发布于 2015-01-19 17:11:07
映射闭包以URL作为参数并返回模型,因此签名应该是
(url: NSURL) -> NSManagedObjectModel和
NSManagedObjectModel(contentsOfURL: url!); // errors here是错误的,因为url在这里不是可选的。另一方面,NSManagedObjectModel(contentsOfURL: url)返回一个需要解包的可选选项。
把它放在一起:
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
(url: NSURL) -> NSManagedObjectModel in
return NSManagedObjectModel(contentsOfURL: url)!
}
return newData
}或使用速记参数符号:
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
NSManagedObjectModel(contentsOfURL: $0)!
}
return newData
}https://stackoverflow.com/questions/28029813
复制相似问题