创建一个帮助程序类来读取和写入plist

时间:2014-05-14 18:29:43

标签: ios objective-c plist

首先,这不是关于如何读取或写入plist的问题。

我一直在从我的程序的不同部分读取和写入同一个PList,我已经厌倦了一遍又一遍地重复代码,我想为这类任务创建一个可重用的类但是我想确保这不是一个疯狂的想法。

  1. 您使用什么来从程序的不同部分读取和写入同一个plist?
  2. 通过使用帮助程序读取和写入plist,您是否看到任何性能问题。
  3. 这听起来像个疯子吗?
  4. 非常感谢

4 个答案:

答案 0 :(得分:3)

我亲自制作了一个:HERE

基本上,您创建一个子类,其属性名称与您的键匹配,并在运行时填充。

您的Plist:

enter image description here

子类:

#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。

答案 1 :(得分:1)

  1. 一对辅助函数必须足够
  2. 我不这么认为
  3. 不,这是一个好主意

答案 2 :(得分:1)

1)您可以使用类而不是对象

2)不,但是你认为可能会有什么?

3)当然不是,你认为为什么会这样?

你特别询问2,而在较小程度上3则暗示你可能对某些事情有一些错误的假设或误解。描述可能对您有用  你问这些背后的理由。

答案 3 :(得分:1)

  1. 我使用了带辅助函数的数据管理器,因此数据是 与应用程序的其他层隔离。
  2. 无。
  3. 疯狂?不需要吗?是。