以下是實體Player
頭文件。具有陣列屬性的核心數據
@interface Player : NSManagedObject
@property (nonatomic, retain) NSNumber * experience;
@property (nonatomic, retain) id items;
@property (nonatomic, retain) NSNumber * level;
@end
@interface items : NSValueTransformer
@end
items
基本上是一個與NSMutableArray
NSNumber
元件。在一個函數裏面,我正在更新這個數組:
- (void)itemWasDropped:(ItemIndex)item
{ // _player has been correctly retrieved from the database
// the current number of this item
int nNum = [[_player.items objectAtIndex:item] intValue];
// to increment the number
[_player.items replaceObjectAtIndex:item withObject:[NSNumber numberWithInt:nNum + 1]];
}
這個函數被調用得很完美。我將這個上下文保存在viewWillDisappear
函數中。
- (void)viewWillDisappear:(BOOL)animated
{ // _moc is an NSManagedObjectContext instance that has been correctly initialised.
// to update the database
NSError* err = nil;
BOOL bSucc = [_moc save:&err];
if (err || !bSucc)
{
...
}
}
問題是隻要我不關閉任務欄中的應用程序,更新在其他視圖中可見。有什麼問題?任何人都可以幫忙
是利用自身的管理對象上下文中的每個看法? –
不,上下文是一樣的。每個視圖都會詢問AppDelegate的上下文。如果上下文尚未初始化,則會初始化並返回。如果有,AppDelegate會簡單地返回它。 – user2226125
剛剛解決它。爲了更新Core Data實體中的數組屬性,必須將該數組分配給視圖控制器類中的另一個「@ property」數組或其他數據,並更新「@ property」數組。在更新數據庫之前,必須將@屬性數組分配回實體屬性。 – user2226125