MagicRecordのインストール

MagicalRecordの導入

下記を参考に導入

http://tech-gym.com/2012/01/objective-c/612.html

 

「Mogenerator error: skipping entity MyObjectName (NSManagedObject) because it doesn't use a custom subclass.」のエラーが発生

エンティティにclass名をつけてなかったことが原因のよう。

 

・参照

http://stackoverflow.com/questions/14183895/mogenerator-error-skipping-entity-myobjectname-nsmanagedobject-because-it-doe

 

 

MagicalRecordの使い方のソースだとどうもうまくいかないため、ソースは下記を参照。

http://www.atmarkit.co.jp/ait/articles/1307/10/news017_2.html

 

「ARC forbids Objective-C objects in structs or unions」のエラーが発生

 

Mogenertorのコマンドの最後に、下記を追加して、ファイルをコピーし直す

--template-var arc=true

 

ちなみに下記サイトを参照

https://github.com/rentzsch/mogenerator/issues/106

 

 

No known class method for selector 'swizzleShorthandMethods' のエラーが発生して落ちる。

 

【原因】 

#define MR_SHORTHAND 1

#import "CoreData+MagicalRecord.h"

より前に書く必要が有るらしい

 

【解決策】

#ifdef __OBJC__

#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h>

// DB系設定の追加

#import "CoreData+MagicalRecord.h"

#define MR_SHORTHAND 1

#endif

 

#ifdef __OBJC__

#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h>

// DB系設定の追加

#define MR_SHORTHAND 1

#import "CoreData+MagicalRecord.h"

#endif

 

 

書いてあるとおりなのになんでやねん。

 

今度は「_OBJC_CLASS_$_ファイル名, referenced from」というエラーが発生。

 

下記サイトを参照

http://d.hatena.ne.jp/bi_na/20111121/1321855527

 

ふむふむ。ファイルとXcodeの紐付けができてないとな。

 

コマンドたたいてできた<エンティティ名>.mと_<エンティティ名>.mのファイルにTarget Membershipのチェックがついていないことに気づく。

 

 

「Incomplete implementation」のWarningが発生。というかずっと発生してた

下記を参照

http://blog.casualappteam.com/blog-entry-43.html

 

なるほど、hにいらないやつがあるのね。

コメントアウトして解決

 

ここまでで導入完了しました。

メモに近いですが、共有まで!

Xcodeって自動インポートできないの?

Xcodeは自動インポートがないらしい。

AppCodeは自動インポートがあるが、有料。

 

AppCodeはxcodeと併用が必要らしく、重くなるので導入を見送ります。

 

・参考

http://developer.smartnews.be/blog/2013/07/16/appcode-increases-objective-c-productivity/

 

error: PCH file built from a different branch ((clang-425.0.27)) than the compiler ((clang-425.0.28)) とエラーがでる

xcodeのバージョンを上げるとコンパイラのバージョンが古いからかエラーがでる。

そんな時はクリーンビルドが必要となる。

 

メニューバーのProduct>Cleanを実行したあとに、再度Runを実行すると問題なく起動できる