2015-09-30 3 views
1

Привет У меня есть проблема с xmppframework используя быстрые, что я всегда получаю 0 элемент, когда выборки объектовXMPPFramework Swift принести объекты всегда нулевой

func fetchedResultsController() -> NSFetchedResultsController? { 
    if fetchedResultsControllerVar == nil { 

     let moc = managedObjectContext_roster() as NSManagedObjectContext? 
     let entity = NSEntityDescription.entityForName("XMPPUserCoreDataStorageObject", inManagedObjectContext: moc!) 

     let sd1 = NSSortDescriptor(key: "sectionNum", ascending: true) 
     let sd2 = NSSortDescriptor(key: "displayName", ascending: true) 

     let sortDescriptors = [sd1, sd2] 
     let fetchRequest = NSFetchRequest() 

     fetchRequest.entity = entity 
     fetchRequest.sortDescriptors = sortDescriptors 
     fetchRequest.fetchBatchSize = 10 

     fetchedResultsControllerVar = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: moc!, sectionNameKeyPath: "sectionNum", cacheName: nil) 
     fetchedResultsControllerVar?.delegate = self 

     do { 
      try fetchedResultsControllerVar!.performFetch() 

     } catch let error as NSError { 
      print("Error: \(error.localizedDescription)") 
      abort() 
     } 
     // if fetchedResultsControllerVar?.performFetch() == nil { 
     //Handle fetch error 
     //} 
    } 

    return fetchedResultsControllerVar! 
} 

меня активировать в моей установке с помощью этого кода

xmppStreams = externalStream 

    xmppRosterStorage = XMPPRosterCoreDataStorage() 
    xmppRoster = XMPPRoster(rosterStorage: xmppRosterStorage) 

    xmppRoster!.autoFetchRoster = true; 
    xmppRoster!.autoAcceptKnownPresenceSubscriptionRequests = true; 

    xmppRoster!.addDelegate(self, delegateQueue: dispatch_get_main_queue()) 
    xmppRoster!.activate(xmppStreams) 

Но когда я печатаю в делетете functoin fetchedResultControllerVar.fetchedObjects, он всегда возвращает 0, но для jidList я могу получить свои списки.

func xmppRosterDidEndPopulating(sender: XMPPRoster?){ 
    var jidList = xmppRosterStorage!.jidsForXMPPStream(xmppStreams) 
    fetchedResultsControllerVar!.fetchedObjects 

    print("List=\(jidList)") 

} 

Я что-то пропустил? Мне нужно запустить XMPPUserCoreDataStorageObject в моем классе? Спасибо

+0

У меня такая же ошибка. http://stackoverflow.com/questions/28824377/in-coredata-entityforname-nil-is-not-a-legal-nsmanagedobjectcontext-parameter Может ли кто-нибудь направить меня .. PLS .. как решить это? –

ответ

0

Вы должны быть уверены, что вы подключились к xmpp перед тем, как выбрать roster, даже если используете XMPPCoreData.

Я сделал Swift Wrapper вокруг XMPPFramework, это упростит разработку основного приложения чата, и оно покажет вам, как правильно получить ваш roster.

Вы можете проверить его here.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Tarec

+0

@Tarec Я обновлю свой ответ, но это проблема с информацией, и реальный ответ на это - предоставить полный код, чтобы лучше понять, как получить список. – Loegic

+0

@Loegic Я столкнулся с той же ошибкой. http://stackoverflow.com/questions/28824377/in-coredata-entityforname-nil-is-not-a-legal-nsmanagedobjectcontext-parameter Может ли кто-нибудь направить меня .. PLS .. как решить это? –

Смежные вопросы