前几天因为在开源中国看到一个求源代码的问题:

模拟一个动物园系统MyZoo 

1、动物园里面有三种动物:Panda,Elephant,Kangaroo
2、三种动物都有一定的数量(不止一只)
3、动物有各自不同的食量(以天为单位的食量),并且每天都在消耗食物。
4、动物园里的食物有固定的储备,而且假设三种动物都吃这一种食物。
5、每个动物都有不同的生产周期,每当到了这种动物的生产周期,动物园就会出现一位新生宝宝(假设其食量和成年动物是一样的)。
6、在主循环里模拟动物园的运转情况,要求在控制台上输出如下内容:第几天、动物的数量、动物园饲料的余量,直到饲料不够吃为止。
7、动物的数量,食量,生产周期,饲料总量都应该是可以配置的(在同一个文件中统一配置)

  因此创建了一个OS X Project:

  使用plist当做这个动物园系统的初始数据的配置,代码结构如下:

  在main.m文件中实现上述题目的要求:

#import <Foundation/Foundation.h>
#import "Tool.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
Panda *panda = [[Panda alloc] init];
Elephant *elephant = [[Elephant alloc] init];
Kangaroo *kangaroo = [[Kangaroo alloc] init]; //读取plist
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
NSLog(@"%@", plistPath); [Tool initWithAnimalDictionary:panda andDict:data];
[Tool initWithAnimalDictionary:elephant andDict:data];
[Tool initWithAnimalDictionary:kangaroo andDict:data]; int fooder_num = 0;
int surplus = 0;
int day = 1; NSDictionary *fooderDict = [data objectForKey:@"fodder"];
fooder_num = [[fooderDict objectForKey:@"count_num"] intValue];
surplus = fooder_num; while(surplus > 0){
if(0 == (day % [panda parturitionDays])){
[panda setCount:([panda count] + 1)];
}
if(0 == (day % [elephant parturitionDays])){
[elephant setCount:([elephant count] + 1)];
}
if(0 == (day % [kangaroo parturitionDays])){
[kangaroo setCount:([kangaroo count] + 1)];
}
surplus = fooder_num - ([panda count] * [panda foodConsumption] + [elephant count] * [elephant foodConsumption] + [kangaroo count] * [kangaroo foodConsumption]);
fooder_num = surplus; if(surplus){
NSLog(@"第 %d 天,熊猫:%d 只,大象:%d 头,袋鼠:%d 只,饲料余量:%d 。\n", day, [panda count], [elephant count], [kangaroo count], surplus);
}
day++;
}
}
return 0;
}

  而这个时候遇见了问题,下面这句代码:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];

  在执行时一直是null,无法找到文件路径.而后在iOS Application Project

中,plistPath是正确值,这下就不知道问题是什么了.看了[NSBundle mainBundle]中对于不同文件夹使用不同的方法,确定将文件放在工程下是使用上述代码.最后尝试各种方法,找到了一种解决方案:

  如上图所示,在Build Phase中Compile Sources中添加data.plist文件即可.

  不过,虽然解决了,可是根本原因却没有想明白,现在拿出来,希望大神们不吝赐教,谢谢.

  需要源代码的可以在评论留下邮箱,欢迎指正.

iOS Application Project与OS X Application Project对于plist使用的区别的更多相关文章

  1. iOS 真机测试错误“The application bundle does not contain a valid identifier”

    iOS 真机测试错误"The application bundle does not contain a valid identifier" 真机测试的时候报错:"The ...

  2. iOS 真机测试错误“The application could not be verified”

    iOS 真机测试错误"The application could not be verified" 真机测试的时候报错:"The application could no ...

  3. ios 程序发布使用xcode工具Application Loader 正在通过ITUNES STORE进行鉴定错误

    ios 程序发布使用xcode工具Application Loader 正在通过ITUNES STORE进行鉴定错误 一:此错误会导致上传程序,一直停留在验证阶段,而没有一点上传进度:结果会苦等半天, ...

  4. 如何在eclipse jee中创建Maven project并且转换为Dynamic web project

    如何在eclipse jee中创建Maven project并且转换为Dynamic web project 注意:该文档只针对以下eclipse版本,如图 为了方便,我将我本地的压缩包放在了微云网盘 ...

  5. 一个Web Project引用多个Java Project在Eclipse下的配置--转载

    项目结构: 项目由一个Web Project和多个Java Project构成,Web Project需要引用其它Java Project的类和Jar包.开发时用Eclipse3.5和Tomcat调试 ...

  6. MyEclipse Web Project导入Eclipse Dynamic Web Project,无法部署到tomcat问 题

    做作业遇到一个小问题,将MyEclipse Web Project导入到Eclipse中开发.在部署到tomcat时,发现无法发布这个项目. 问题分析: MyEclipse Web Project被识 ...

  7. Failed to load project at 'xxx.xcodeproj', incompatible project version。

    Failed to load project at 'xxx.xcodeproj', incompatible project version. 更新最新的xcode,xcode高版本可以打开低版本的 ...

  8. solr File Upload "Unsupported ContentType: application/vnd.ms-excel Not in: [application/xml, application/csv, application/json, text/json, text/csv, text/xml, application/javabin]",

    今天在用solr管理界面导入文件时报错:"Unsupported ContentType: application/vnd.ms-excel  Not in: [application/xm ...

  9. 【软件project】菜鸟俯瞰软件project

    [背景]初次接触软件project,对软件project不是彻底的了解.但学完一遍软件project,我还是有些感触的. 以下我就对我这阶段的软工学习和理解做一下小小的总结,如有不妥之处.欢迎指正. ...

随机推荐

  1. 219. Contains Duplicate II【easy】

    219. Contains Duplicate II[easy] Given an array of integers and an integer k, find out whether there ...

  2. nginx服务器部署

    nginx(“engine x”)是一个高性能的HTTP和反向代理服务器.   安装nginx Linux下  sudo apt-get install nginx windows下 下载 nginx ...

  3. js和jquery触发按钮点击事件

    js触发按钮点击事件 function load(){ //下面两种方法效果是一样的 document.getElementById("target").onclick(); do ...

  4. 域名出售(www.shopbao.com)

    www.shopbao.com 前有淘宝,今有商宝. 商宝网站,精彩无限. 因经济原因,忍痛割爱,欲出售该商业域名. 有意者,请联系:18610310405 MAIL: jieisme@163.com

  5. Java进阶02 异常处理(转载)

    异常处理 Java的异常处理机制很大一部分来自C++.它允许程序员跳过暂时无法处理的问题,以继续后续的开发,或者让程序根据异常做出更加聪明的处理. Java使用一些特殊的对象来代表异常状况,这样对象称 ...

  6. HTTPS请求 SSL证书验证

    import urllib2 url = "https://www.12306.cn/mormhweb/" headers = {"User-Agent": & ...

  7. opencv中彩色图转换成灰度图rgb2gray

    imread函数读入图像: 只需要将imread的第二个参数置为0即可. Mat imread(const string& filename, intflags=1 ); 第一个参数是载入图片 ...

  8. openwrt源码下载移植

    openwrt源码下载移植 一.源码下载 1.1下载 由于本人多次尝试从SVN代码地址下载代码,出现无法访问因此这里选择从Git代码地址进行下载.在linux系统命令终端输入 git clone gi ...

  9. OpenCV学习笔记七:opencv_nonfree模块

    一,简介: 顾名思义,这个模块不是free的.主要包含: 1,SIFT implementation. The class implements SIFT algorithm by D. Lowe. ...

  10. Qt 静态编译后的exe太大, 能够这样压缩.

    1. 下载PECompact 下载地址:http://download.csdn.net/download/sniper_bing/7669247 ,  不行大家就去baidu搜索下载就能够了这个是绿 ...