swift函数返回对象或nil

时间:2015-10-06 18:31:17

标签: ios swift function swift2

我在课堂上有一个方法:

func myFunc() -> Any?
{
    let fetchRequest        = NSFetchRequest(entityName: "Product")
    fetchRequest.predicate  = NSPredicate(format: "shopitem == %@", self.objectID)
    fetchRequest.fetchLimit = 1;
    do
    {
       fetchResults = try self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [Product]
    }
    catch
    {
       fatalError("Fetching from the store failed")
    }

    if fetchResults.count > 0
    {
       return fetchResults.first
    }
    return nil
}

然后我在另一个类中调用此方法。但是如何检查从中返回的对象:

let product = MyClass.myFunc() as! Product
cell.productTitleLabel.text = product.product_title 

如果我的方法返回nil,则此代码返回错误。

2 个答案:

答案 0 :(得分:3)

您可以使用条件类型转换来处理此方案。 (参考Type Casting):

if let product = MyClass.myFunc() as? Product
{
   cell.productTitleLabel.text = product.product_title 
}

此外,如果您需要检查返回值的类型,可以使用:

var product = MyClass.myFunc()
if product is Product
{
    // Do stuff
}

答案 1 :(得分:1)

一个简单的解决方案是在设置产品变量之前进行简单的检查:

if let product = MyClass.myFunc() as? Product {
   cell.productTitleLabel.text = product.product_title
}