天天看點

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的釋出