2017-01-04 2 views
0

У меня есть несколько классов, каждый из которых имеет ряд переменных типа Date. напримерУказатели хранилища переменных в Swift

class MyClass1 { 
    var dt1: Date 
    var dt2: Date 
    var dt3: Date 
} 
class MyClass2 { 
    var dt1: Date 
    var dt2: Date 
    var dt3: Date 
} 

Я хочу составить список, содержащий ссылки на даты в экземплярах любого из классов. например Он может содержать ссылку на dt1 в экземпляре MyClass1, а другой - на dt2 в экземпляре MyClass2. Я буду использовать этот список, чтобы установить эти даты на определенное значение.

Я могу видеть, как это сделать, сохраняя экземпляры класса с флагом, обозначающим указанную дату (например, с использованием перечисления). Затем я мог бы использовать переключатель, чтобы определить, какую дату установить. Однако есть ли более быстрый способ сделать это? Я в идеале хочу обработать каждую переменную даты как объект, который я могу добавить в список, а затем установить другое значение.

Мне также нужно сделать это для некоторых числовых переменных, поэтому нужен подход, который будет работать для обоих.

+2

Это звучит странно. Как вы планируете использовать эту конструкцию? Может быть, мы найдем лучшие альтернативы – Cristik

+0

Можете ли вы добавить пример использования? – Daniel

+0

Вот еще информация о приложении. У меня есть несколько классов, представляющих финансовые объекты, такие как занятость, пенсия, аннуитет, сбережения и т. Д. Они независимы и (по правде) не знают друг о друге. Тем не менее, пользователь может захотеть связать, например, дату окончания трудоустройства (выход на пенсию) с датой начала пенсии. Затем мое приложение позволяет изменять эти привязанные даты и моделирует влияние на доход. – Julian7

ответ

0

Вы по существу хотите обработать Date (который является struct) в качестве эталонного типа (то есть a class). Есть простой способ сделать это с помощью класса обертки:

class DateRef { 
    let date: Date 

    init(_ date: Date) { 
     self.date = date 
    } 
} 

class MyClass1 { 
    var dt1: DateRef 
    var dt2: DateRef 
    var dt3: DateRef 

    init(dt1: Date, dt2: Date, dt3: Date) { 
     self.dt1 = DateRef(dt1) 
     self.dt2 = DateRef(dt2) 
     self.dt3 = DateRef(dt3) 
    } 
} 

// same for MyClass2 ... 

let m1 = MyClass1(dt1: Date(), dt2: Date(), dt3: Date()) 
let m2 = MyClass2(dt1: Date(), dt2: Date(), dt3: Date()) 

var dates = [m1.dt2, m2.dt1] 
+0

Но 'Date' уже является' struct', ссылающимся на объект, то есть на 'NSDate'. Зачем идти наоборот? – Cristik

+0

Спасибо. Это то, что мне нужно. Он пояснил, что мне нужны мои даты, чтобы быть изменяемыми объектами. – Julian7

Смежные вопросы