1

コア データを使用する iOS アプリケーションがあります。を構築しましたNSManagedObjectModel。そこに NEOrder エンティティがあります。NSManagedObject サブクラスを生成しました。

@interface NEOrder : NSManagedObject

@property //....

@end

UIViewController のサブクラスがあります。これには、NEOrder 型のインスタンス変数が必要です。しかし、一般的なカスタム オブジェクトのように動作するようにしたい:

@interface NEOrder : NSObject

@property //....

@end

もちろん、そこに NSObject をサブクラス化する NEOrder_ の宣言を含む別の .h および .m ファイルを作成することによって実行できます。ただし、このファイルは、@synthesize/@dynamic と init メソッドを除いて、NSObjectModel で生成されたコア データと非常によく似ています。その仕事は二度としたくない。助けてください、どうすればできますか?

生成された NEOrder アプリに init を追加するとクラッシュします。

-(id)init
{
    if (self=[super init])
    {
        self.name=[[NSString alloc] init];
        self.phone=[[NSString alloc] init];
        self.weight=[[NSNumber alloc] init];
        self.fromDirection=[[NEDirection alloc] init];
        self.toDirection=[[NEDirection alloc] init];
    }
    return self;
}

そして、私がそれをどのように使いたいかについて、さらにいくつかの言葉。

//NEOrder *order is an instance of view controller
self.order=[NEOrder alloc] init]
//...
self.order.name=@"order name";
self.order.phone=@"12344321";

出来ますか?または、そのために別の NSObject のサブクラスを作成する必要がありますか?

4

3 に答える 3

2

あなたの質問の一部が意味をなさない:

一般的なカスタム オブジェクトのように動作するようにします。

どう言う意味ですか?

あなたの質問の残りの部分は、単一のNEOrderクラスが必要であり、View Controller を次のように設定する必要があることを示唆しています。

MyViewController.h:

@class NEOrder;

@interface MyViewController : UIViewController

@property (strong) NEOrder *order;

@end

MyViewController.m:

#include "NEOrder.h"

@implementation MyViewController

...

@end
于 2012-11-09T17:31:16.467 に答える
1

すべてのクラスは NSObject から継承するため、NSManagedObject も NSObject から継承します。これは、NEOrder オブジェクトが NSObject のすべての特性を持つことを意味します。

于 2012-11-09T17:31:32.457 に答える
1

カテゴリを使用します。カテゴリは、実際のクラスの外部にあるクラスのメソッドを記述するために使用できます。私はコア データ モデルでそれらを使用するので、何らかの理由で NSManagedObjectModel を再生成する必要がある場合は、メソッドを保持します。

于 2012-11-09T17:31:46.953 に答える