Ios 为UIViewController类创建成员
我试着做了一些研究,但没有弄清楚,那么是否可以为类UIViewController或任何此类创建成员 在我的每个UIViewController子类中,我都声明了数据成员Ios 为UIViewController类创建成员,ios,swift,Ios,Swift,我试着做了一些研究,但没有弄清楚,那么是否可以为类UIViewController或任何此类创建成员 在我的每个UIViewController子类中,我都声明了数据成员 userdata = [NSManagedObject]() 所以我想知道是否可以在实际的UIViewController类中声明变量“userdata”,直接或通过外部文件。您只需创建一个子类UIViewController,该子类具有userdata属性,然后从该类派生所有视图控制器,而不是UIViewControlle
userdata = [NSManagedObject]()
所以我想知道是否可以在实际的UIViewController类中声明变量“userdata”,直接或通过外部文件。您只需创建一个子类
UIViewController
,该子类具有userdata
属性,然后从该类派生所有视图控制器,而不是UIViewController
比如:
class BaseViewController:UIViewContrller {
var userdata = [NSManagedObject]()
}
class NewViewController:BaseViewController {
// Your sub view controller implementation goes here
}
您只需创建一个子类
UIViewController
,该子类具有userdata
属性,然后从该类而不是UIViewController
比如:
class BaseViewController:UIViewContrller {
var userdata = [NSManagedObject]()
}
class NewViewController:BaseViewController {
// Your sub view controller implementation goes here
}
您应该使用扩展名
extension UIViewController {
var userData : [NSManagedObject] {
get {
return [NSManagedObject]()
}
}
}
如果不希望每个UIViewController
都具有该属性,则必须使用子类化
class DataViewController:UIViewContrller {
var userdata = [NSManagedObject]()
}
class NewViewController:DataViewController {
// Do something stuff to the View here
}
您应该使用扩展名
extension UIViewController {
var userData : [NSManagedObject] {
get {
return [NSManagedObject]()
}
}
}
如果不希望每个UIViewController
都具有该属性,则必须使用子类化
class DataViewController:UIViewContrller {
var userdata = [NSManagedObject]()
}
class NewViewController:DataViewController {
// Do something stuff to the View here
}
如果
userData
是计算属性,则可以使用扩展:
extension UIViewController {
var userData: [NSManagedObject] {
get { return an array from somewhere else }
set { set the value to somewhere else }
}
}
如果属性不是计算的而是存储的,则必须使用子类:
class BaseViewController: UIViewController {
var userData: [NSManagedObject] = []
}
让你的每个VC都继承这个类。使用这种方法的缺点是视图控制器不能继承任何其他类,如UITableViewController
这是我想出的最好的方法
创建协议:
protocol MyVC {
var userData: [NSManagedObject] { get set }
}
现在让你的每个VC都遵守这个协议。在每个VC中,只需开始键入
userData
,然后使用enter键选择Xcode提供的正确补全,属性就会自动添加。如果忘记执行此操作,编译将失败。如果userData
是计算属性,则可以使用扩展:
extension UIViewController {
var userData: [NSManagedObject] {
get { return an array from somewhere else }
set { set the value to somewhere else }
}
}
如果属性不是计算的而是存储的,则必须使用子类:
class BaseViewController: UIViewController {
var userData: [NSManagedObject] = []
}
让你的每个VC都继承这个类。使用这种方法的缺点是视图控制器不能继承任何其他类,如UITableViewController
这是我想出的最好的方法
创建协议:
protocol MyVC {
var userData: [NSManagedObject] { get set }
}
现在让你的每个VC都遵守这个协议。在每个VC中,只需开始键入
userData
,然后使用enter键选择Xcode提供的正确补全,属性就会自动添加。如果忘记执行此操作,编译将失败。Ha!真不敢相信我竟然没有想到这一点。完美的答案,谢谢!很高兴能帮上忙:)哈!真不敢相信我竟然没有想到这一点。完美的答案,谢谢!很高兴能帮上忙:)