8.花名册
打開花名冊頭文件
XMPPRoster.h
XMPPRosterCoreDataStorage.h? 核心數據存儲
?
在appDelegate.h中定義XMPPRoster全局訪問的花名冊屬性模塊
在appDelegate.m中定義XMPPRosterCoreDataStorage數據存儲模塊
在設置XMPPStream中電子名片模塊下實列化花名冊并激活
2.3 _xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] init];
_xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:_xmppRosterStorage];
3.重新連接模塊添加到XMPPStream
[_xmppRoster activate:_xmppStream];
4.添加代理
[_xmppRoster addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)];
//銷毀XMPPStream并注銷
{
1.刪除代理
[_xmppRoster removeDelegate:self];
2.取消激活
[_xmppRoster deactivate];
4.內存清理
_xmppRoster = nil;
_xmppRosterStorage = nil;
}
?
?
創建一個類,RosterViewController繼承UITableViewController 將花名冊的class指向這個類 指定可重用標識符將identifier: RosterCell
使用XMPP花名冊存儲需要導入一個CoreData.framework框架
使用NSFetchedResultsController抓取結果控制器
在.m文件中導入<CoreData/CoreData.h>頭文件
并定義一個成員變量NSFetchedResultsController *_fetchedResultsController;
// 表格分組數量?
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
{
? ?return _fetchedResultsController.sections.cont; //返回查詢結果的數量
}
//對應分組中表格的行數
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSArray *sectionData = [_fetchedResultsController sections];
if(sectionData.count>0){
id <NSFetchedResultsSectionInfo>sectionInfo = sectionData[section];
return [sectionInfo numberOfObjects];
}
return 0;
}
//表格行內容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *ID = @"RosterCell"; //ID為表格可重用標識符
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID forIndexPath:indexPath];
return cell;
//設置單元格
?
}
?
// 實例化NSFetchedResultsController
導入代理頭文件 設置appDelegate代理方法
-(AppDelegate *)appDelegate{
return [[UIApplication sharedApplication] delegate];
-(void)setupFetchedController{
0. 如果要針對coreData做數據訪問,都離不開NSManagedObjectContext
1.實例化NSManagedObjectContext
? NSManagedObjectContext *context = [[[self appDelegate] xmppRosterStorage]mainThreadManagedObjectContext];
2.實例化NSFetchRequest
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"XMPPUserCoreDataStorageObject"];
3.0實例化一個排序
NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:@"displayName" ascending:YES];
NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"jidStr" ascending:YES];
? [request setSortDescriptors:@[sort1,sort2]];
3.實例化NSFetchedResultsController
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:@"sectionNum" cacheName:nil];
//設置FetchedResultsController的代理
[_fetchedResultsController setDelegate:self];
4.查詢數據
NSError *error = nil;
if (![_fetchedResultsController performFetch:&error]){
NSLog(@"%@",error.localizedDescription);
};
}
?//然后再到 設置單元格?
XMPPUserCoreDataStorageObject *user = [_fetchedResultsController objectAtIndexPath:indexPath];
? cell.textLabel.text = user.displayName;
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/qq907374866/p/4275117.html
總結
- 上一篇: 人脸搜索引擎准得吓人,记者:我都不知道自
- 下一篇: 每天10分钟——10.22