最好的解決方案通常是將這種邏輯移動到像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」傾倒所有東西。