Objective c 存储文件名和属性列表名常量的最佳做法 你认为在Objtovi-C中存储常数(如属性列表的文件名)的最佳实践是什么?p>
我想在以下代码中改进硬编码的“Config.plist”:Objective c 存储文件名和属性列表名常量的最佳做法 你认为在Objtovi-C中存储常数(如属性列表的文件名)的最佳实践是什么?p>,objective-c,ios,Objective C,Ios,我想在以下代码中改进硬编码的“Config.plist”: NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Config" ofType:@"plist"]; NSDictionary *rows = [[NSDictionary alloc]initWithContentsOfFile:plistPath]; 你可以用 在处理诸如NSDictionary之类的对象时,可能需要将其转换为NSData的实例。这可以通过
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Config" ofType:@"plist"];
NSDictionary *rows = [[NSDictionary alloc]initWithContentsOfFile:plistPath];
你可以用
在处理诸如NSDictionary
之类的对象时,可能需要将其转换为NSData
的实例。这可以通过以下方法完成:
[NSKeyedArchiver archivedDataWithRootObject:(id)];
及
最好的解决方案通常是将这种逻辑移动到一个模型对象中,比如
MYConfiguration
。这样,您就可以使用显式方法查询MYConfiguration
,而不会直接访问NSDictionary
关于该文件的名称,有许多方法可以对其进行抽象,这取决于您真正需要的重用程度(这里可能会过火)
首先是常数。在MYConfiguration.m
中,可以像这样放置一个私有常量:
static NSString * const kConfigurationFileBaseName = @"Config";
您还可以使用返回路径的方法:
- (NSString *)pathToConfigurationFile {
return [[NSBundle mainBundle] pathForResource:kConfigurationFileBaseName ofType:@"plist"];
}
直接在pathToConfigurationFile
中硬编码文件名,而不是使用常量,这种情况并不少见。常量通常仅在值被多次使用的情况下才需要。如果给定的常量只出现一次,那么将该值移到别处有时会使代码更难理解。这些只是指导方针,不是规则
如果您需要常量本身公开可用,那么可以在MYConfiguration.h
中这样声明它:
extern NSString * const kMYConfigurationFileBaseName;
然后在.m中定义它:
NSString * const kMYConfigurationFileBaseName = @"Config";
但所有这一切的关键是在与常量使用相关的标题中定义这些常量。你不会为每件事创造一些中心的“MYGlobals”垃圾场
extern NSString * const kMYConfigurationFileBaseName;
NSString * const kMYConfigurationFileBaseName = @"Config";