Swift中的对象:'对象的价值'没有会员

时间:2016-02-12 01:13:41

标签: swift swift2 realm

这是我的蠢事。

我在一个名为functions.swift

的文件中得到了这个可爱的小函数
//functions.swift

     func latestActiveGoal() -> Object {
            let realm = try! Realm()
            let currentGoal = realm.objects(Goal).filter("Active == 1").sorted("CreatedOn").last
            return currentGoal!
        }

返回Goal个对象。 (目标可能是想减肥,或者不再对斯威夫特这么无能为力)。

在另一个视图控制器中,我想访问此对象。这是我正在尝试的内容:

//viewController.swift

@IBOutlet weak var aimText: UILabel!

let funky = functions()

    func getGoals(){

            var currentGoal = funky.latestActiveGoal()
            print(currentGoal)

            aimText.text = currentGoal.Title
    }

print(CurrentGoal)输出显示:

Goal {
    id = 276;
    Title = Goal Title;
    Aim = Aim;
    Action = Nothing;
    Active = 1;
    CreatedOn = 2016-02-12 00:14:45 +0000;
}

aimText.text = currentGoal.TitleaimText = currentGoal.Title都会抛出错误:

Value of 'Object' has no member 'Title'

通过打印对象的内容,我可以看到数据,但无法弄清楚如何。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

正如错误消息所述,currentGoalObject类型的值,其中没有成员Title

这是因为函数latestActiveGoal返回Object而不是Goal。您只需要通过更改返回类型返回Goal

func latestActiveGoal() -> Goal {

答案 1 :(得分:2)

只需使用以下代码替换您的函数即可。 它将完美无缺。

此功能将检查目标是否可用,然后只返回。

func latestActiveGoal() -> Object? {
            let realm = try! Realm()
            let currentGoals = realm.objects(Goal).filter("Active == 1").sorted("CreatedOn")
            if currentGoals.count > 0 {
                 return currentGoals.last;
            }
            return nil;
        }

您的getGoals方法如下。

func getGoals(){    
    if let currentGoalObject = funky.latestActiveGoal() {
        print(currentGoalObject)
        let goal = currentGoalObject as! Goal
        print(goal.Title)
        aimText.text = goal.Title
    }
}