我必须NSFetchedResultsController
在后台线程上执行fetch .
我目前的解决方案结构如下:
dispatch_queue_t fetchQueue = dispatch_queue_create("backgroundfetching", NULL);
dispatch_async(fetchQueue,^{
// 1. Create NSManagedObjectContext
// 2. Create NSFetchRequest
// 3. Create NSFetchedResultsController
// 4. PerformFetch
dispatch_async(dispatch_get_main_queue(),^{
[[self table] reloadData];
});
});
dispatch_release(fetchQueue);
Run Code Online (Sandbox Code Playgroud)
我的第一次测试运行良好,但这是适当的方式吗?
我想了解更多核心数据,为什么我们"获取"并搜索实体而实体是"内部"托管对象?例如 :
NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription =
[NSEntityDescription entityForName:@"Employee" inManagedObjectContext:moc];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
Run Code Online (Sandbox Code Playgroud)
另外,持久对象存储包含什么?如果我理解,持久对象存储从sqlite文件中获取数据,但后来有点困惑,是:一个实体,对于一个持久对象存储,对于sqlite文件中的一个数据?
谢谢你的回答
保罗
我有几种类型的os根视图控制器,我想一次实例化一个(每个函数调用一次).我想创建一个属性并将其分配给这个新创建的viewcontroller.问题显然是这个属性必须是一个特定的类型,依赖于它实例化的viewcontroller ...
有没有办法创建一个通用指针来克服这个....
我正在尝试为我的导航栏添加标题,我已经以编程方式添加了该标题.我知道我可以创建一个标签并将其添加为子视图,但是我需要添加大量的配置才能正确放置,就像在典型的导航栏标题中一样.有没有其他方法可以做到这一点:
- (void)viewDidLoad
{
[super viewDidLoad];
//Adding navBar programmatically
CGFloat width = self.view.frame.size.width;
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,width,52)];
navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
//Adding title programmatically
UILabel *lblTitle = [[UILabel alloc]initWithFrame:CGRectMake(10,10,80,30)];
lblTitle.text = @"Title";
[navBar addSubview: lblTitle];
[self.view addSubview:navBar];
}
Run Code Online (Sandbox Code Playgroud)
如果不是(对不起另一个问题,只是认为它有关)我如何设置我的lblTitle看起来像你会在大多数应用程序中找到的普通导航栏标题.
谢谢!