zoukankan      html  css  js  c++  java
  • 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;

      

      

  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/qq907374866/p/4275117.html
Copyright © 2011-2022 走看看