2010-05-27 4 views
1

У меня есть 2 объекта, которые я хочу связать с KVO, один класс statTracker, который отслеживает разные статистики, а другой класс достижения, содержащий информацию о достижениях. В идеале, что я хочу сделать, это настроить KVO, имея экземпляр класса достижения, наблюдающего значение в классе statTracker, а также настройте пороговое значение, при котором экземпляр достижения должен быть «запущен» (запуск в этом случае означало бы, показывая UIAlertView и изменяя свойства для класса достижения)iPhone OS: Есть ли способ настроить KVO между двумя объектами ManagedObject?

Я хотел бы также установить эти отношения на конкретизации класса достижения, если это возможно

так вроде как это:.

Achievement *achievement1 = (Achievement *)[NSEntityDescription insertNewObjectForEntityForName:@"Achievement" inManagedObjectContext:[[CoreDataSingleton sharedCoreDataSingleton] managedObjectContext]]; 
    [achievement1 setAchievementName:@"2 time launcher"]; 
    [achievement1 setAchievementDescription:@"So you've decided to come back for more eh? Here are some achievement points to get you going"]; 
    [achievement1 setAchievementPoints:[NSNumber numberWithInt:300]; 
      [achievement1 setObjectToObserve:@"statTrackerInstace" 
          propertyToObserve:@"timesLaunched" 
          valueOfPropertToSatisfyAchievement:2] 

Кто-нибудь знает, как я это установлю? Есть ли способ, которым я мог бы это сделать в отношениях, которые я не вижу?

Спасибо,

Ник

ответ

0

NSManagedObjects являются NSObjects, если Вы поддерживаете их с классами, вы можете добавить любые методы, которые вы хотели бы.

Таким образом, вы можете создать класс менеджера достижений, который управляет отношениями между классами и выполняет любые триггерные ответы.

+0

Да, это то, как я изначально начал эту вещь (с классом отслеживания достижений), и я думаю о том, чтобы пытаться не делать этого таким образом. но, возможно, вы правы там, возможно, не было вокруг, или, по крайней мере, это не так, как проще, чем просто делать это с помощью трекера. --Спасибо за быстрый ответ. – nickthedude