首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建NSManagedObjectModel时调用中的额外参数

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

Stack Overflow用户
提问于 2015-01-19 16:57:18
回答 1查看 86关注 0票数 0

我真不明白为什么我的地图方法出错了。错误是调用中的额外参数。

这样做是可行的:

代码语言:javascript
复制
let url1 = NSURL(string: "123");
let url2 = NSURL(string: "456");
NSManagedObjectModel(contentsOfURL:url1!);

当我试图用地图表示NSURL数组时,

代码语言:javascript
复制
func createModels(test: [NSURL]) -> [NSManagedObjectModel]  {
    let newData = test.map {
        (url) -> NSURL in
        NSManagedObjectModel(contentsOfURL: url!); // errors here
    }
    return newData
}

因此,在第一个片段中,我知道我可以使用该方法调用创建一个NSManagedObjectModel。但是,当我试图对一个NSURL数组使用map函数时,它会在调用中给出一个额外的参数错误。有什么想法吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 17:11:07

映射闭包以URL作为参数并返回模型,因此签名应该是

代码语言:javascript
复制
(url: NSURL) -> NSManagedObjectModel

代码语言:javascript
复制
NSManagedObjectModel(contentsOfURL: url!); // errors here

是错误的,因为url在这里不是可选的。另一方面,NSManagedObjectModel(contentsOfURL: url)返回一个需要解包的可选选项。

把它放在一起:

代码语言:javascript
复制
func createModels(test: [NSURL]) -> [NSManagedObjectModel]  {
    let newData = test.map {
        (url: NSURL) -> NSManagedObjectModel in
        return NSManagedObjectModel(contentsOfURL: url)!
    }
    return newData
}

或使用速记参数符号:

代码语言:javascript
复制
func createModels(test: [NSURL]) -> [NSManagedObjectModel]  {
    let newData = test.map {
        NSManagedObjectModel(contentsOfURL: $0)!
    }
    return newData
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28029813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档