【发布时间】:2014-07-27 15:43:05
【问题描述】:
我正在尝试从我的数据库中获取请求。但我的回应是零。获取是可以的,因为当我使用这种方法时,我会得到“有时”的值。 (我知道我在数据库中有数据)。我认为这与线程问题或因为我正在使用多上下文有关。所以我的问题基本上是通用的。
-
1234563 (假设我保存了孩子和父母,我可以看到数据库上的变化)
如果我使用使用 NSPrivateQueueConcurrencyType 的 MOC 保存数据,我可以使用 MOC NSMainQueueConcurrencyType 获取数据吗?和相反的方式..?
我可以在后台线程上获取数据还是我必须在主线程上获取?
Main线程和NSMainQueueConcurrencyType有什么联系
Background 线程和 NSPrivateQueueConcurrencyType 有什么联系 谢谢,
更新:
问题是我获取一些实体并将一些标志更改为 isSync = YES 当我想保存它时我使用我的保存方法:
-(void)saveDataToDBWithCompletionWithManagedObjectContext:(NSManagedObjectContext*)managedObjectContext withCompletion:(void (^)(BOOL succeeded ,NSError *error))completion {
if (managedObjectContext != nil) {
[managedObjectContext performBlockAndWait:^{
NSError *errorMsg = nil;
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&errorMsg]) {
// do some real error handling
NSLog(@"couldn't save Background Context, error %@, %@", errorMsg, [errorMsg userInfo]);
if (completion) {
completion(NO, errorMsg);
}
} else {
if (completion) {
completion(YES, nil);
}
}
}];
} else {
if (completion) {
completion(NO, nil);
}
}
}
该方法获取NSManagedObjectContext,并将其保存到相关的NSManagedObjectContext中。然后我运行我的主保存:
-(void)saveMasterDataToDBWithSync:(BOOL)toDoSync WithCompletion:(void (^)(BOOL succeeded ,NSError *error))completion {
NSError *errorMsg = nil;
if (self.masterManagedObjectContext != nil) {
if ([self.masterManagedObjectContext hasChanges] && ![self.masterManagedObjectContext save:&errorMsg]) {
if (completion) {
completion(NO, errorMsg);
}
} else {
if (toDoSync) {
// DO sync with Parse
}
if (completion) {
completion(YES, nil);
}
}
} else {
if (completion) {
completion(NO, nil);
}
}
}
当我检查我的数据库时,数据就在那里!但是当我尝试取它时,我看不到任何东西。
【问题讨论】:
标签: ios objective-c core-data