这是我的蠢事。
我在一个名为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.Title
和aimText = currentGoal.Title
都会抛出错误:
Value of 'Object' has no member 'Title'
通过打印对象的内容,我可以看到数据,但无法弄清楚如何。非常感谢任何帮助。
答案 0 :(得分:3)
正如错误消息所述,currentGoal
是Object
类型的值,其中没有成员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
}
}