我在导入下面使用此代码来定义一些信息。我想改为使用plist来提取这些信息。如何切换它?
static NSUInteger kCGRectY = 520;
static NSUInteger kCGRectH = 340;
static NSString *kImage = @"Cover.png";
static NSString *kMImage = @"IMG_0172.JPG";
static NSString *kNames = @"WHO ELSE WORKED ON IT";
static NSString *kTitle = @"PROJECT DANDELION";
static NSString *kText = @"Lorem ipsum dolor sit amet, consectetur adipisicing elit";
在代码中我使用它:
[pageView setImage:[UIImage imageNamed:kImage]];
UIImage *image = [UIImage imageNamed:kMImage];
CGSize size = [image size];
[colorView setFrame:CGRectMake(0, kCGRectY, size.width, kCGRectH)];
有什么想法吗?
答案 0 :(得分:1)
一种简单的方法是使用预处理器来处理更改访问它的所有代码,并使用一个对象或类句柄来加载plist中的信息。
使用此代码替换每个变量的变量声明:
#define kImage ([(AppDelegateClass*)[[UIApplication sharedApplication] delegate] getStringForKey:@"kImage"])
然后,在您的应用程序委托中,实现getStringForKey:
方法。
- (NSString *)getStringForKey:(NSString *)key {
static NSDictionary *plist = nil;
if(!plist) plist = [[NSDictionary alloc] initWithContentsOfFile:@"path/to/plist.plist"];
return [plist objectForKey:key];
}
请注意,此代码仅处理字符串,而不是数字。如果您希望您的数字也来自plist,您可以将它们添加为字符串并获取整数值:
#define kCGRectY ([[(AppDelegateClass*)[[UIApplication sharedApplication] delegate] getStringForKey:@"kCGRectY"] intValue])