gpt4 book ai didi

swift - 创建 NSManagedObjectModel 时调用中的额外参数

转载 作者:行者123 更新时间:2023-11-28 13:18:10 26 4
gpt4 key购买 nike

我真的不明白为什么我的 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 作为参数返回模型,所以签名应该是

(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
}

关于swift - 创建 NSManagedObjectModel 时调用中的额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28029813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com