2013-10-19 19 views
0

因此,我已經創建了一個名爲name的屬性的表。第一個表格抓住名稱的不同值,因爲可以有多個相同的名稱。下一個表格視圖打開了這個特定值的重複項。指定了objectID的表中的核心數據副本

但是,我遇到的問題是從副本中獲取的信息只能從最新的伴隨屬性中獲取。所以他們都指向相同的信息。

以下是抓取放置在表格中的對象的方法。

AppDelegate.m

- (NSArray *)allLikePlaces:(id)place { 

    NSManagedObjectContext *moc = [[SVAppDelegate sharedAppDelegate] managedObjectContext]; 

    NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Place" inManagedObjectContext:moc]; 

    [fetch setEntity:entity]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@", place]; 

    [fetch setPredicate:predicate]; 

    NSError *error; 
    NSArray *result = [moc executeFetchRequest:fetch error:&error]; 

    if(error){ 
     NSLog(@"allPlaces error: %@", [error localizedDescription]); 
    } 

    return result; 
} 

這是放置對象在表中的方法。

TableView.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    SVAppDelegate *ad = [SVAppDelegate sharedAppDelegate]; 
    NSArray *list = [ad allLikePlaces:_place]; 

    NSManagedObject *obj = list[indexPath.row]; 
    cell.textLabel.text = [obj valueForKey:@"name"]; 

    return cell; 
} 

我就能夠擁有這些對象,以顯示其相應的數據,而不僅僅是最新的記錄。

我一直在嘗試實施基於objectID的實現,但沒有成功。我非常感謝在此方面的任何幫助。

+0

我不明白你的目標是什麼。請更好地解釋你想達到的目標。樣品可以。 –

+0

@flexaddicted對不起,我在表中選擇的數據然後輸出到'UIView'。發生的事情是,它只是用tableview抓取最後輸入的重複(使用屬性「name」)記錄的屬性。舉個例子。名稱是UNI,那麼表格中的所有單元格都會引用最後輸入的名稱UNI的記錄,而不是它們在記錄中的伴隨屬性。 – deco20

+0

你的謂詞'@「的名字像%@」,place'找到所有「名字」(或多或少)等於「place」的對象,那麼爲什麼你驚訝所有顯示的名字是相同的呢? –

回答

0

我不知道我理解您的評論

名稱是UNI,在該表中的所有單元格,然後將引用該名UNI的 最後輸入的記錄,而不是自己的,而不是伴隨 屬性記錄。

但正如Martin所說,您的謂詞會查找name屬性與place相似的所有對象。所以,所有的名字都是平等的。現在

,如果你想創建爲每個對象一個唯一的標識符,您應該創建一個像uuidNSString型)另一個屬性,並根據用戶設定的name屬性的同時,一種獨特的標識符生成的填充它。蘋果提供了幾種方法來做到這一點。例如UUID Strings With Cocoa。積分爲@Abizern

關於顯示它,只需在運行時抓取cellForRowAtIndexPath。例如

NSString* uuidString = [obj valueForKey:@"uuid"]; 
// assign it to whatever UI elements you want 
// e.g. cell.detailTextLabel.text = uuidString; 
+0

感謝您的回答,我沒有時間將其完全實現到我的項目中,但我無法弄清楚如何使用uuid進行索引,但將單元格文本設置爲更有意義的內容(與隨機生成的字符串ID相反) 。我爲這個可憐的解釋道歉,那時候已經很晚了。 – deco20