首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift2:返回可选类型对象

Swift2:返回可选类型对象
EN

Stack Overflow用户
提问于 2015-11-20 10:01:30
回答 3查看 115关注 0票数 0

我是swift2世界中的新手,目前我正在为一个简单的函数而奋斗:

代码语言:javascript
复制
// Get all moves for the first category
func getMuscles() -> BodyPart {

        let bpart:BodyPart?

        if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext {
            do{
                let fetchRequest = NSFetchRequest(entityName: "BodyPart")
                let fetchResults = try managedObjectContext.executeFetchRequest(fetchRequest) as! [BodyPart]
                bpart = fetchResults[0]
            } catch let error as NSError  {
                print(error)
                bpart = nil
            }
        }
        return bpart
}

我怎样才能解决这个问题?swift2中定义函数的“最佳实践”是什么?

谢谢

编辑1

我试图更改该方法的签名,但错误仍然存在:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-20 12:29:03

您应该问自己的问题是,getMuscles()是否总是必须返回一个对象,或者它是否可以返回一个零。

通过将方法签名更改为func getMuscles() -> BodyPart?,您基本上是在声明该方法可能返回零,从而解决了您的立即编译时问题。

在特定的上下文中,因为要从CoreData中获取对象,所以允许getMuscles()返回零可能是明智的。

定义函数的方式(如果函数返回选项?,或者不返回)完全取决于调用代码。

票数 4
EN

Stack Overflow用户

发布于 2015-11-20 10:50:20

只需返回:

代码语言:javascript
复制
func getMuscles() -> BodyPart? { }
票数 1
EN

Stack Overflow用户

发布于 2015-11-20 11:06:49

将方法签名更改为: func getMuscles() -> BodyPart?

但是,在调用此函数时,在展开返回值时要小心。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33823842

复制
相关文章

相似问题

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