0

私は学習目的のアプリを開発しています。NSXMLParserを使用したフィードパーサーです。永続性を除いて、ほとんどすべてが達成されます。アーカイブを学び、プロジェクトに実装しましたが、より良いソリューションに移行し、学習曲線を改善するために、アプリをCoreDataに移行することにしました。

以下は私のパーサーコードです。FeedChannelは、feedburnerのフィード内のチャネル属性を処理し、FeedItemファイルが処理している「アイテム」も取得します。

FeedChannel.h

#import <Foundation/Foundation.h>

@interface FeedChannel : NSObject <NSXMLParserDelegate> {

    NSMutableArray *items;
    NSMutableString *currentString;
}

@property (nonatomic, assign) id parentParserDelegate;
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *sDescription;
@property (nonatomic, readonly) NSMutableArray *items;

@end

FeedItem.h

#import <Foundation/Foundation.h>

@interface FeedItem : NSObject <NSXMLParserDelegate> {

    NSMutableString *currentString;

}

@property (nonatomic, assign) id parentParserDelegate;
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *link;
@property (nonatomic, retain) NSString *creator;
@property (nonatomic, retain) NSString *pubDate;
@property (nonatomic, retain) UIImage *thumbnail;


@end

私はCoreDataを学ぼうとしましたが、新しいプログラマーにとっては明らかに少し複雑です。

現在、プロジェクトにCoreDataフレームワークを追加し、モデルファイルを作成し、FeedChannelとFeedItemという名前の2つのエンティティを追加しました。方法がわからないのは次のとおりです。

1)Xcodeの「CreateManaged Subclass」を使用して既存のファイルを上書きするか、インスペクターパネルの各エントリのデータモデルでクラス名を指定する必要がありますか、それとも両方のアプローチが同じですか?

2)「マネージドサブクラスの作成」を使用すると、合成ではなく動的も使用され、プロジェクトに影響するかどうかわかりません。

3)コアデータのデータモデルにUIImageタイプがあるため、サムネイル属性の扱い方。

そして最も重要な質問:

4)FeedItem内のアイテムを保持しているFeedChannelファイル内のNSMutableArray「アイテム」を処理するにはどうすればよいですか?どういうわけか1対多の関係を築く必要がありますか?

うまくいけば、初心者が直面するコアデータに関連するすべての基本的な質問に答えることができます。前もって感謝します。

4

1 に答える 1

1
  1. 「マネージドサブクラスの作成」ショートカットはまさにそれです。実際に行うのは、NSManagedObject(vs. NSObject)をサブクラス化し、すべての属性と関係のプロパティを作成することだけです。いいえ、使用する必要はありません。必要に応じて、同じことを手動で行うことができます。

  2. はい、管理対象オブジェクトのプロパティはである必要があります@dynamic。これは、プロパティが実行時にコアデータによって解決されることをコンパイラに通知します。

  3. transformable任意のオブジェクトを処理するタイプが必要です。プロパティはid、ジェネリックオブジェクトタイプになります。

  4. コアデータがアレイに置き換わります。to-manyチャンネルとフィードアイテムの間に関係があります。to-oneフィードアイテムとチャネルの間に逆の関係を作成し、関係を逆としてマークしてください。

CoreDataの使用に関する優れたチュートリアルと本がいくつかあります。最初は少し気が遠くなるように見えますが、実際にはそれほど悪くはありません。

于 2013-01-25T12:55:12.827 に答える