我会保持简短。我正在努力完成以下任务:
class Media {
var likes.count : Int? = 0
}
显然,编译器会给我一个error
:
Consecutive declarations on a line must be separated by ';'
有办法解决这个问题吗?我知道我最终可以使用String Replace
做某种Mirror(reflecting:object)
,但我想保持它的效率。 会喜欢任何帮助。感谢。
更新
我不够清楚,抱歉。问题是编译器不允许我在变量声明名称中使用.
。
答案 0 :(得分:1)
我建议使用Struct。 Struct
与值引用的类基本相同。因此,您可以使用自己的嵌套Struct
和variables
拥有尽可能多的functions
s,就像一个类!最好的部分是,您永远不必使用Struct
作为功能代码,就像将变量命名为命名一样。我经常使用Constants
swift文件执行此操作。
struct Constants {
struct MainMenu {
static var height:CGFloat = 420
static var width:CGFloat = 240
static var backgroundColor:UIColor = .red
}
struct MainViewController {
static var toolBarHeight:CGFloat = 49
static var backgroundColor:UIColor = .blue
}
}
用法:
func getRemainingHeight() ->CGFloat {
let viewHeight = self.view.bounds.size.height
let menuHeight = Constants.MainMenu.height
let toolBarHeight = Constants.MainViewController.toolBarHeight
return viewHeight - (menuHeight + toolBarHeight)
}
答案 1 :(得分:0)
问题是编译器不允许我在变量声明名称中使用
.
。
确切地说,Swift中的属性名称不能包含.
字符。
现在,如果你想写这样的东西
let media = Media()
media.likes.count = 1
然后你需要定义你的类,如下所示
class Media {
class Likes {
var count = 0
}
var likes = Likes()
}
或
class Likes {
var count = 0
}
class Media {
var likes = Likes()
}
请不要使用像这样隐式解包的选项
var likes.count : Int! = 0
它们就像一把准备射击的枪,并使整个应用程序崩溃!
最后,class
关键字以小写字母开头:class
而不是Class
。