天天看点

MR_SHORTHAND does not work

  开发过程中我一直没用到coredata,之前一直用的sqlite或者基于此的第三方开源框架。最近用到coredata了解了一下,直接使用现在比较流行的MagicalRecord,毕竟封装好的还是简单的。^_^,(感谢对这些第三方框架做过贡献的大家)

  对于使用过程不赘述,只说遇到的问题,本人为了使用MagicalRecord中得方法时避免写MR_前缀且避免很多文件添加import "CoreData+MagicalRecord.h“,自己创建了PCH文件,对于XCode6系列添加PCH文件方法不赘述 点击打开链接。

PCH文件如下:

#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#define MR_SHORTHAND
#import "CoreData+MagicalRecord.h"
#endif
           

添加相关的插入,获取数据代码,当然使用时都是省略MR_前缀的,command + R 运行产生以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[Note CreateEntity:]: unrecognized selector sent to class 0x73813c'
           

原因:我添加第三方库时使用了cocoaPods,导致MR_SHORTHAND不起作用。

解决方法: Pods-MagicalRecord-prefix.pch文件中添加 MR_SHORTHAND

修改结果如下:

#ifdef __OBJC__
#import <UIKit/UIKit.h>
#endif 
#import "Pods-environment.h"
#ifdef __OBJC__
#define MR_SHORTHAND
#import "CoreData+MagicalRecord.h"
#endif
           

运行成功。

^_^我犯错误了,当我再次为了添加其他第三方框架时pod install的时候,Pods-MagicalRecord-prefix.pch被更新,

<span style="font-size:14px;"><span style="font-size:12px;">#define MR_SHORTHAND
</span></span>
           

被去除,还需要再次添加才行。 终极解决方案:use 

MagicalRecord/Shorthand

 in your 

Podfile 修改你的podfile

pod ‘MagicalRecord/Shorthand’, '~>2.2'

再次pod install ,再次运行,成功。

注:对于其中出现的十几个警告,暂时没办法,敬请大家期待2.3的发布