Создайте вспомогательный класс для чтения и записи в/из plist

Прежде всего, это не вопрос о том, как читать или писать в plist.

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

  1. Что вы используете для чтения и записи в один и тот же plist из разных частей вашей программы?
  2. Видите ли вы какие-либо проблемы с производительностью при использовании помощника для чтения и записи в plist.
  3. Это звучит как сумасшедшая идея?

Большое спасибо


person fs_tigre    schedule 14.05.2014    source источник


Ответы (4)


Я лично сделал один: ЗДЕСЬ

По сути, вы создаете подкласс с именами свойств, соответствующими вашим ключам, и он заполняется во время выполнения.

Ваш список:

введите здесь описание изображения

И подкласс:

#import "PlistModel.h"

@interface CustomModel : PlistModel

@property (strong, nonatomic) NSString * StringPropertyKey;
@property (strong, nonatomic) NSDate * DatePropertyKey;
@property (strong, nonatomic) NSArray * ArrayPropertyKey;
@property (strong, nonatomic) NSDictionary * DictionaryPropertyKey;

@property int IntPropertyKey;
@property BOOL BoolPropertyKey;
@property float FloatPropertyKey;

@end

И доступ:

[CustomModel plistNamed:@"CustomModel" inBackgroundWithBlock:^(PlistModel *plistModel) {

    // Get the plist
    CustomModel * customModel = (CustomModel *)plistModel;

    // Populated properties 
    NSLog(@"PlistIncluded - StringProperty: %@", customModel.StringPropertyKey);
    NSLog(@"PlistIncluded - DateProperty: %@", customModel.DatePropertyKey);
    NSLog(@"PlistIncluded - ArrayProperty: %@", customModel.ArrayPropertyKey);
    NSLog(@"PlistIncluded - DictionaryProperty: %@", customModel.DictionaryPropertyKey);
    NSLog(@"PlistIncluded - IntProperty: %i", customModel.IntPropertyKey);
    NSLog(@"PlistIncluded - BoolProperty: %@", customModel.BoolPropertyKey ? @"YES" : @"NO");
    NSLog(@"PlistIncluded - FloatProperty: %f", customModel.FloatPropertyKey);

}];

Он автоматически сохраняется на Dealloc, или вы можете вызвать save. Если это не пакетный plist и вы его редактируете, вы можете установить свойства, и они автоматически синхронизируют Plist.

person Logan    schedule 14.05.2014
comment
Спасибо большое, посмотрю. - person fs_tigre; 14.05.2014
comment
Круто, это довольно новое, так что дайте мне знать, если вы столкнетесь с проблемами, которые я мог пропустить. Это было довольно последовательно в проекте, для которого я разработал его :) - person Logan; 14.05.2014

  1. Пары вспомогательных функций должно быть достаточно
  2. я так не думаю
  3. Нет, это хорошая идея
person Andrey Chernukha    schedule 14.05.2014

  1. Я использовал диспетчер данных со вспомогательными функциями, поэтому данные отделены от других слоев приложения.
  2. Никто.
  3. Сумасшедший? Нужен? да.
person ColdLogic    schedule 14.05.2014

1) Вы можете использовать класс, а не объект

2) Нет. Но почему вы думаете, что они могут быть?

3) Конечно нет, опять же, почему вы думаете, что это может быть?

Тот факт, что вы спрашиваете, в частности, 2 и в меньшей степени 3, означает, что у вас могут быть неправильные предположения или неправильные представления о чем-то. Возможно, вам будет полезно описать свои причины, по которым вы их задаете.

person Gruntcakes    schedule 14.05.2014