これは、CoreData に精通している iPhone 開発者にとってはおそらく簡単ですが、私は知りませんし、重要な期限内にデータに適切にアクセスする方法を本当に知りたいと思っています.
これは、NSMutableArray
NSLogで設定され、プルされた後の私のコアデータです
Questions List KM: (
"<Question: 0x8589630> (entity: Question; id: 0x8588820 <x-coredata://FDC76465-4884-473A-B46A-3451BCB74F5C/Question/p1> ; data: {\n orderID = 0;\n project = \"0x818e300 <x-coredata://FDC76465-4884-473A-B46A-3451BCB74F5C/Project/p1>\";\n question = \"What is ...? \";\n strategy = \"<relationship fault: 0x8264930 'strategy'>\";\n})",
"<Question: 0x85898d0> (entity: Question; id: 0x8588830 <x-coredata://FDC76465-4884-473A-B46A-3451BCB74F5C/Question/p2> ; data: {\n orderID = 1;\n project = \"0x818e300 <x-coredata://FDC76465-4884-473A-B46A-3451BCB74F5C/Project/p1>\";\n question = \"How is ...? \";\n strategy = \"<relationship fault: 0x826fa60 'strategy'>\";\n})",
"<Question: 0x8589930> (entity: Question; id: 0x8588840 <x-coredata://FDC76465-4884-473A-B46A-3451BCB74F5C/Question/p3> ; data: {\n orderID = 2;\n project = \"0x818e300 <x-coredata://FDC76465-4884-473A-B46A-3451BCB74F5C/Project/p1>\";\n question = \"Where is ...? \";\n strategy = \"<relationship fault: 0x826c430 'strategy'>\";\n})"
)
以下を使用して、これを配列に簡単にプルできました。
// fetch and sort questions
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Question" inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"orderID" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil) {
// Handle the error.
NSLog(@"No Results in Questions Array.");
}
[self setQuestionsList:mutableFetchResults];
Question.h または質問の定義は次のとおりです。
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Project, Strategy;
@interface Question : NSManagedObject
@property (nonatomic, retain) NSNumber * orderID;
@property (nonatomic, retain) NSString * question;
@property (nonatomic, retain) Project *project;
@property (nonatomic, retain) NSSet *strategy;
@end
@interface Question (CoreDataGeneratedAccessors)
- (void)addStrategyObject:(Strategy *)value;
- (void)removeStrategyObject:(Strategy *)value;
- (void)addStrategy:(NSSet *)values;
- (void)removeStrategy:(NSSet *)values;
@end
定義の Strategy.h は次のとおりです。
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Question;
@interface Strategy : NSManagedObject
@property (nonatomic, retain) NSString * strategy;
@property (nonatomic, retain) Question *question;
@end
3 つの質問があることをデータの NsLog で確認できます。
- 質問 = 「何ですか?
- 質問 = 「どうですか...?
- 質問 = 「... はどこですか?
また、リレーションシップに戦略セクションがあることも示しています。
strategy = \"<relationship fault: 0x826c430 'strategy'>\
私ができる必要があるのは、この戦略にアクセスし、それにタイプ NSString の単一のオブジェクトを追加することです。
割り当てられたら、戦略として NSMutableArray にプルして、UITableView にプッシュする必要があります。
私はこれを理解することがたくさんあることを知っていますが、アップルの第一人者にとって、これはおそらくケーキとアイスクリームのように聞こえます.
回答にさらに情報が必要な場合は、コメントでお知らせください....素晴らしいStackOverflowメンバーがかつて私に言った
「最も難しいのは、正しい質問の仕方を見つけることです。」
どんな助けでも大歓迎です!