创建 NSManagedObjectModel 时调用中的额外参数
extra argument in call when creating NSManagedObjectModel
我真的不明白为什么我的 map 方法会出错。错误是调用中的额外参数。
这个有效:
let url1 = NSURL(string: "123");
let url2 = NSURL(string: "456");
NSManagedObjectModel(contentsOfURL:url1!);
当我尝试将 map 用于 NSURL 数组时,
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
(url) -> NSURL in
NSManagedObjectModel(contentsOfURL: url!); // errors here
}
return newData
}
所以在第一个片段中,我知道我可以使用该方法调用创建一个 NSManagedObjectModel。但是当我尝试使用 map 函数为 NSURL 数组执行此操作时,它会给我一个调用中额外参数的错误。有什么想法吗?提前致谢。
映射闭包采用URL作为参数和returns模型,
所以签名应该是
(url: NSURL) -> NSManagedObjectModel
和
NSManagedObjectModel(contentsOfURL: url!); // errors here
是错误的,因为 url
在这里不是可选的。另一方面,
NSManagedObjectModel(contentsOfURL: url)
returns 可选
需要打开包装。
放在一起:
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
(url: NSURL) -> NSManagedObjectModel in
return NSManagedObjectModel(contentsOfURL: url)!
}
return newData
}
或用shorthand参数表示法:
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
NSManagedObjectModel(contentsOfURL: [=13=])!
}
return newData
}
我真的不明白为什么我的 map 方法会出错。错误是调用中的额外参数。
这个有效:
let url1 = NSURL(string: "123");
let url2 = NSURL(string: "456");
NSManagedObjectModel(contentsOfURL:url1!);
当我尝试将 map 用于 NSURL 数组时,
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
(url) -> NSURL in
NSManagedObjectModel(contentsOfURL: url!); // errors here
}
return newData
}
所以在第一个片段中,我知道我可以使用该方法调用创建一个 NSManagedObjectModel。但是当我尝试使用 map 函数为 NSURL 数组执行此操作时,它会给我一个调用中额外参数的错误。有什么想法吗?提前致谢。
映射闭包采用URL作为参数和returns模型, 所以签名应该是
(url: NSURL) -> NSManagedObjectModel
和
NSManagedObjectModel(contentsOfURL: url!); // errors here
是错误的,因为 url
在这里不是可选的。另一方面,
NSManagedObjectModel(contentsOfURL: url)
returns 可选
需要打开包装。
放在一起:
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
(url: NSURL) -> NSManagedObjectModel in
return NSManagedObjectModel(contentsOfURL: url)!
}
return newData
}
或用shorthand参数表示法:
func createModels(test: [NSURL]) -> [NSManagedObjectModel] {
let newData = test.map {
NSManagedObjectModel(contentsOfURL: [=13=])!
}
return newData
}