plist保存问题

问题描述
今天做Denizen Box,需要收集用户资料,用[NSDictionary writeToFile: atomically:]方法保存。模拟上此函数成功,返回true;真机上此函数失败,返回false。

问题分析
代码如下:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
bool result=[addDictionary writeToFile:plistPath atomically:YES];

代码没有变化,而真机就是写入不了,猜想是权限问题。

问题解决
把代码改为:

NSArray *storeFilePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *doucumentsDirectiory = [storeFilePath objectAtIndex:0];
NSString *plistPath=[doucumentsDirectiory stringByAppendingPathComponent:@"data.plist"];
bool result=[addDictionary writeToFile:plistPath atomically:YES];

问题解决了。

事后发现,路径不一样:
修改前:

/var/mobile/Applications/A528A4DE-F391-4247-8C5D-9386DC415A00/Box.app/data.plist

修改后:

/var/mobile/Applications/A528A4DE-F391-4247-8C5D-9386DC415A00/Documents/data.plist

《魔术师》

看完整部片子才知道作者要讲的是父爱。

官网:http://www.lillusionniste-lefilm.com/

故事发生在50年代末,正当年轻人的摇滚乐横扫秀场,帕斯帕斯,一个年老的法国魔术师渐渐失去了观众,生计难以为继。他带着道具和一只小兔子到伦敦碰运气,却依旧没有观众,直到偶然的机会来到苏格兰高地上一个偏远的小镇。娱乐稀少的小镇居民热烈欢迎魔术师的到来,更是在这里,帕斯帕斯碰到了他一生中最后一个观众,孤女爱丽丝。爱丽丝相信魔术是真的,相信魔术师可以变出任何想要的东西,当帕斯帕斯离开小镇的时候,爱丽丝瞧瞧跟着他上了船。在爱丁堡,他们住进了最简陋破旧的旅社,同住的都是些穷困潦倒的艺人。魔术师勉强靠演出维持生计,可是爱丽丝爱上了玻璃橱窗里的美丽衣裙和鞋子,并且要魔术师变给她。不会说英文的魔术师在演出的空档尝试了各种卑微的工作,给爱丽丝买了她所有喜欢的东西——却总是以魔术的形式变给她,从来没有戳破她那个相信魔术的梦。而他的回报,就是爱丽丝开心的笑脸和甜甜的吻。魔术师很满足,虽然有时候,他会看着一张照片沮丧。直到有一天,魔术师发现爱丽丝不见了,发了疯似的寻找她,终于撞见她和一个英俊的男孩手挽手走在一起。帕斯帕斯明白女孩找到了依赖的人。于是,他留下钱给女孩,还有一张字条:魔术师不存在,就这样像魔术一样“消失”。电影的结尾,那张总是让魔术师黯然神伤的照片终于清清楚楚的放在观众面前:一个小女婴,魔术师不知所终的女儿。所有的故事都缘起自魔术师对自己女儿没能完成的爱,如果说电影里有什么了不起的魔术,那也正是这份爱。

这是一部向法国最伟大的喜剧大师雅克·塔蒂致敬的片子。原剧本是雅克·塔蒂本人于1956年创作的一个鲜为人知的作品,被认为那是写给他当时才十几岁的私生女海尔格(Helga Marie-Jeanne Schiel)的一封特殊的信。这个剧本一直没有被搬上荧幕,是因为塔蒂本人认为片子蕴含太多私人情绪,隐晦而且让人感到不愉快。塔蒂与妻子米谢琳·温特的女儿索菲(Sophie Tatischeff)认为除了他的父亲塔蒂先生没人可以更好的演绎出这个片子。2000年,索菲将这个剧本交给了当时靠着处女短片杀入奥斯卡最佳动画短片、正在制作Les Triplettes de Belleville (美丽都三姐妹)、并且是默片粉丝的法国动画导演Chomet手中。他们之间的认识源于Chomet向索菲寻求剪辑使用一段塔蒂在电影Jour de fête(节日)中的片段,索菲提出一个建议,让Chomet制作一个动画中的tati,她不希望任何人来演绎他的父亲。不久索菲与世长辞,而私生女海格尔作为长女成为塔蒂唯一在世的直系亲属。

不同SDK对pathForResource函数兼容问题

问题描述
前些天做AD iPad版,程序在4.2版本的iPad上运行良好,但是安装到3.2版本的iPad上有些功能点load不出。

问题分析
设置断点,一步一步跟踪,查找到:

// init position
NSString *plistPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d/feature_point",[self getPage]] ofType:@"plist"];
_positions=[[NSDictionary alloc] initWithContentsOfFile:plistPath];

以上代码plistPath值为空,查找这句中所有的语句的SDK支持,都只要SDK2.0,而我们是3.2,完全符合。

问题解决
一步一步排除,最后焦点在pathForResource: ofType:函数,查找SDK的时候发现另有一个函数是pathForResource: ofType: inDirectory:函数,把该句改为:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"feature_point" ofType:@"plist" inDirectory:[NSString stringWithFormat:@"%d",[self getPage]]];

问题解决了!!!

Project Settings的设置bug

问题描述
帮客户的iPad安装AD demo,机器SDK是4.2.1,客户iPad SDK是3.2,直接developer debug不成功。

问题分析
把“Project Settings”的"Build"选项卡里的"Base SDK"设置为"Latest iOS"(最高),并把"iOS Deployment Target"设置为"iOS 3.0"(最低)。

问题解决
网上查了下,看到一老外的解决办法,如下:

I believe the only requirement is that you edit and resave the info.plist file. I editted to 1.7, saved, and then back to 1.0 and it worked fine.

It may be that XCode is binding in additional details from the build settings at the time of packaging and since the info.plist hadn't changed those additional bindings did not get attached. If this is the case I would consider it a bug.

我也认为是一个iOS的Bug,只有修改info.plist才会导致project settings设置生效。

《秒速五厘米》

“我只是做好手边力所能及的事情。”
“我们发了1000次短信,可心灵的距离恐怕只靠近了1厘米……”

时间和空间造就爱情,也消磨爱情。

本片的时间推断:第三话的时间设定是2008年(杂志上提到1999年发射的火箭终于到达太阳系边缘),所以第二话主人公高三的时候是1999年,逆推之,初中一年级大约是1994年,再推之,主人公们的出生年度大约是1981年。

在种子岛,我们被骗了,以为是他一直在给明里短信,我想,那一定是在心里发给明理的短信,那是精神上的神往,却不曾带给人幸福。最终也未表白的乡村少女,只能在冲浪中慢慢成长。

画面没得说,每一帧都能截图做桌面,特别是各种光效。
插曲《One more time One more chance》超好听,配合电影绝配,让我不禁以为电影是新海诚是专这首歌做的MV。
最后附上歌词:
  还要失去什么东西 才能让我得到宽恕   还要承受多少痛苦 才能与你再次相会   One more time 四季啊 不要更替   One more time 回到那与你嬉戏的时光   争吵的时候 总是我先认输   可你的任性 令我更加迷恋   One more chance 被记忆禁锢的我   One more chance 已无法选择下一个归宿   我一直在寻觅 寻觅着你的身影   对面的房间 巷中的窗口   虽然明知你不在那里   若愿望能够实现 我要立刻到你身边   已经不再害怕什么   即使付出一切 也要将你抱紧   若只是排解寂寞 谁都可以取代   但在这繁星欲坠之夜 我无法再欺骗自己   One more time 四季啊 不要更替   One more time 回到那与你嬉戏的时光   我一直在寻觅 寻觅着你的身影   熙攘的街头 彷徨的梦中   虽然明知你不在那里   若奇迹能够发生 我要立刻与你相见   在一个崭新早晨 抛弃所有过去   说出那句酝酿已久的「我爱你」   夏天的回忆萦绕在心头   想起无意间消逝的心动   我一直在寻觅 寻觅着你的身影   黎明的街道 落樱的小镇   虽然明知你不在那里   若愿望能够实现 我要立刻到你身边   已经不再害怕什么   即便付出一切 也要将你抱紧   我一直在寻觅 寻觅着你的音讯   启程的旅店 报纸的角落   虽然明知你不在那里   若奇迹能够发生 我要立刻与你相见   在一个崭新早晨 抛弃所有过去   说出那句酝酿已久的「我爱你」   我一直在寻觅 寻觅着你的笑容   疾驰的列车 铁道的两旁   虽然明知你不在那里   若生命能够轮回 无论几次也与你相随   已经没有什么 能够令我留恋   只要有你 我别无所求