2016-07-06 4 views
0

ここで私はClipTableという名前のエンティティを持っています。私はすべてのユーザのクリップ関連情報をすべて取得していますが、 NSUserDefaultsを使用してuser_idを保存しています。私のクリップテーブルには、created_by_userという名前の属性があります。これは基本的に、クリップを格納している特定のユーザーのユーザーIDです。だからNSUserDefaultsからこのcreated_by_user属性とuser_idを使用して私は両方が同じかどうかをチェックしたい。両方が同じであれば、その特定のユーザーのクリップレコードのみを取得します。以下は、NSFetchResultControllerを使用してtableView内のすべてのユーザのすべてのクリップレコードを表示できるコードです。しかし、今私は特定のユーザーのためのレコードを取得したい。これをするのは難しい時です。どんな助けもありがとうございます。NSUserDefaultsとCoreData属性を一致させ、両方が同じ場合のデータを取得する方法

-(void)fetch:(NSString*)catgeory :(BOOL)All{ 

AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
self.managedObjectContext = delegate.managedObjectContext; 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"ClipTable"]; 

// Add Sort Descriptors 
[fetchRequest setSortDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"modifieddate" ascending:NO]]]; 

//_fetchedResultsController=nil; 
// Initialize Fetched Results Controller 
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil]; 

if (All==NO) { 
    [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"(page_categorisation == %@)",catgeory]]; 
} 

[fetchRequest setFetchBatchSize:0]; 
// [fetchRequest setFetchLimit:10]; 
// Configure Fetched Results Controller 
[self.fetchedResultsController setDelegate:self]; 

// Perform Fetch 
NSError *error = nil; 
[self.fetchedResultsController performFetch:&error]; 

if (error) { 
    NSLog(@"Unable to perform fetch."); 
    NSLog(@"%@, %@", error, error.localizedDescription); 
} 
} 

答えて

1

は簡単な解決策は、単にログインしているユーザーのクリップを取得するために述語を使用している "ユーザーID" @]:

USER_IDは[NSUserDefaults standardUserDefaults] stringForKeyです。 currentLoggedInUserのNSUserDefaultsから現在ログインしているユーザーの値を取得し、それを下に渡します。

NSString *predicateFrmt = @"created_by_user == %@ ; 
NSPredicate *predicate = [NSPredicate predicateWithFormat: predicateFrmt, currentLoggedInUser]; 
fetchRequest.predicate = predicate; 

カテゴリーのためにあなたが使用することができると私はiniWithFetchRequestに述語を渡した場合

[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"(page_categorisation == %@ AND created_by_user == %@)",catgeory,currentLoggedInUser]]; 
+0

は、どのように私は... fetchresultControllerに述語を渡す必要があります。それはエラーが – vicky

+0

を@Pandey_Laxman与え述語[fetchRequest setPredicate:述語] (すべて==いいえ) –

+0

if(All = no)のロジックがわからないときは、毎回その呼び出しが[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@ "(page_categorisation ==% @ AND created_by_user ==%@) "、catgeory、currentLoggedInUser]]; その他の条件 [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@ "(created_by_user ==%@)"、currentLoggedInUser]]; –

関連する問題