抱歉让你久等了,我想给你一个非常详细的答案,而不是昨晚匆忙:) 所以我们开始吧。
首先在您的项目中,我们需要添加一个新目标。转到您的项目设置并右键单击您的目标。单击复制。
您将获得一个可能名为 Target-copy 的新目标。您还将为该目标获得一个新的 info.plist 文件。
接下来我们将编辑我们的专业版的内置设置。滚动或搜索并找到Apple LLVM compiler 4.0 Preprocessing。添加到您的调试和发布配置。我通常只使用简单的PRO=1
. 您还需要添加PRO=0
到您的 lite 版本,否则当您尝试构建该版本时它将未定义。
现在让我们看看如何添加一个自定义 plist,我相信你会需要。首先创建两个文件夹。重要的是这些是文件夹而不是组。在每个文件夹中,我们可以创建一个具有完全相同文件名的 plist。
从现在开始,您可以为它们中的每一个添加一些东西。我刚刚添加了一个键property
和一个值pro string
/ lite string
。最后到代码。在我制作的示例项目中,我简单地覆盖了viewDidLoad
但显然这将在任何地方工作。由于 plist 具有相同的名称,您可以使用一行代码加载它们。它们永远不会混淆,因为它们只会被复制到各自的目标。如果你需要做基于代码级的逻辑,你可以使用PRO
我们制作的预处理器。
- (void)viewDidLoad
{
[super viewDidLoad];
// This will load the proper plist automatically.
NSLog(@"Plist Value: %@",[[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"]] objectForKey:@"property"]);
// Also remember we set up a preprocessor PRO. you can use it as well.
if (PRO) {
NSLog(@"Only Show for Pro");
} else {
NSLog(@"Only Show for Lite");
}
NSLog(@"This will show for both");
}
这是我用于所有 lite/pro 版本应用程序的方法,因此我可以共享一个公共代码库,而无需在项目或其他复杂系统之间复制它。到目前为止,它对我来说效果很好:) 快乐编码!
来源
想到有人可能可以使用该项目来查看,所以这里是在GitHub 上。