2013-08-07 74 views
0

我有一個tableView應該只顯示coreData實體的對象,如果這個實體屬性等於一個字符串。只顯示核心數據陣列的一部分

有一個實體,稱爲購買和它的一個屬性,是一個叫位置

而在我的tableViewController代碼串是:

@property (strong) NSMutableArray *buy; 

- (NSManagedObjectContext *)managedObjectContext 
{ 
    NSManagedObjectContext *context = nil; 
    id delegate = [[UIApplication sharedApplication] delegate]; 
    if ([delegate performSelector:@selector(managedObjectContext)]) { 
     context = [delegate managedObjectContext]; 
    } 
    return context; 
} 

    - (void)viewDidAppear:(BOOL)animated 
    { 
     [super viewDidAppear:animated];  
     NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 
     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Buy"]; 
      self.buy= [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 

     [self.tableView reloadData]; 
    } 

現在我只嘗試顯示物品購買其中包含的位置字符串等於「a」。但我不怎麼寫if條件。

感謝您提前給出答案。

+0

僅基於所示的代碼,它看起來對我來說,你可能希望使用一個NSPredicate您的提取請求。它看起來像[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@「position ==%@」,@「a」]]; – sbaker

回答

2

做到以下幾點: -

NSString *str="a"; 
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"position == %@",str]; 

因此,viewDidAppear功能變爲: -

- (void)viewDidAppear:(BOOL)animated 
    { 
     [super viewDidAppear:animated];  
     NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 
     NSString *str="a"; 
     NSPredicate *predicate=[NSPredicate predicateWithFormat:@"position == %@",str]; 
     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Buy"]; 
     [fetchRequest setPredicate : predicate ]; 
      self.buy= [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 

     [self.tableView reloadData]; 
    } 
+0

nit:應該是@「a」。 – sbaker

+0

@sbaker是否也可以刪除**購買**的一個對象? – user2650439