완료 핸들러와 함께 함수를 사용할 때 변수가 초기화되지 않음

user1680944

channels내 SendBird 채팅 응용 프로그램에서 사용할 수있는 채팅 채널 수로 변수를 초기화하려고 합니다. 나는이 과정 private func loadChannels()을 위해 위에서 언급 한 변수에 채널을로드하기 위해 다음 같은 함수 를 사용합니다. 내가 이해하지 못하는 것은 함수가 호출 될 때 채널이로드되고 아래 코드에서 볼 수 있듯이 표시 될 수 있다는 것입니다. 그러나 channels외부에 동일한 변수의 내용을 표시하려면 loadChannels()빈 변수를 얻습니다. 무엇이 문제일까요?

import UIKit
import SendBirdSDK
import JSQMessagesViewController


class ViewController: UIViewController {


    var messages = [JSQMessage]()

    var channels =  [SBDOpenChannel]()
    private var refreshControl: UIRefreshControl?
    private var openChannelListQuery: SBDOpenChannelListQuery?



    override func viewDidLoad() {


        //connecting to the application
        SBDMain.initWithApplicationId("1662A8E8-F45F-454B-9E5E-02362342ECC5")

        //Connecting the user
        SBDMain.connect(withUserId: "tahrisqalli", completionHandler: { (user, error) in
            // ...
            print("connected tahrisqalli")


                print ("printing channels")
                self.loadChannels()
                print (self.channels)


            print ("printing channels")
            self.loadChannels()
            // Here content of channels variable is empty 
            print (self.channels)

        })



    }

 private func loadChannels() {
        self.openChannelListQuery = SBDOpenChannel.createOpenChannelListQuery()
        self.openChannelListQuery?.limit = 20

        if self.openChannelListQuery?.hasNext == false {
            return
        }

        self.openChannelListQuery?.loadNextPage(completionHandler: { (channels, error) in
            if error != nil {
                print ("error")
                return
            }

            for channel in channels! {

                self.channels.append(channel)

            }
            // Here content of channels is full with the correct channels
            print (self.channels)

        })
    }
3stud1ant3

다음과 같이 할 수 있습니다.

import UIKit
import SendBirdSDK
import JSQMessagesViewController


class ViewController: UIViewController {


    var messages = [JSQMessage]()

    var channels =  [SBDOpenChannel]()
    private var refreshControl: UIRefreshControl?
    private var openChannelListQuery: SBDOpenChannelListQuery?



    override func viewDidLoad() {


        //connecting to the application
        SBDMain.initWithApplicationId("1662A8E8-F45F-454B-9E5E-02362342ECC5")

        //Connecting the user
        SBDMain.connect(withUserId: "tahrisqalli", completionHandler: { (user, error) in
            // ...
            print("connected tahrisqalli")


                print ("printing channels")
                self.loadChannels(){
                     print (self.channels)
                }



            //print ("printing channels")
            //self.loadChannels()
            // Here content of channels variable is empty 
            //print (self.channels)

        })



    }

 private func loadChannels(callback: @escaping () -> void) {
        self.openChannelListQuery = SBDOpenChannel.createOpenChannelListQuery()
        self.openChannelListQuery?.limit = 20

        if self.openChannelListQuery?.hasNext == false {
            return
        }

        self.openChannelListQuery?.loadNextPage(completionHandler: { (channels, error) in
            if error != nil {
                print ("error")
                return
            }

            for channel in channels! {

                self.channels.append(channel)

            }
            // Here content of channels is full with the correct channels
           // print (self.channels)
            callback()

        })
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

제네릭 및 완료 핸들러와 함께 싱글 톤을 사용할 때 컴파일 오류

분류에서Dev

"watch"와 함께 사용할 때 "awk"가 작동하지 않음

분류에서Dev

DispatchQueue와 함께 완료 핸들러 사용

분류에서Dev

함수가 완료 될 때까지 동적으로로드 된 JS를 사용할 수 없음

분류에서Dev

유효성 검사기를 포함 할 때 초기화되지 않은 상수

분류에서Dev

AngularJS와 함께 사용할 때 href가 렌더링되지 않음

분류에서Dev

초기화 함수를 호출 할 때 $ scope 변수가 인식되지 않습니다.

분류에서Dev

다음 완료 핸들러를 사용하여 함수를 어떻게 호출합니까?

분류에서Dev

-O1 최적화와 함께 gcc를 사용할 때. 배열 데이터 초기화가 무시되고 배열을 사용하려고하면 초기화되지 않은 데이터로 끝납니다.

분류에서Dev

이벤트 핸들러에서 사용될 때 정의되지 않은 함수

분류에서Dev

ui-router와 함께 대상 '_blank'를 사용할 때 정의되지 않음

분류에서Dev

group_modify와 함께 사용할 때 그룹화 변수를 유지하도록 dplyr group_by 함수 관리

분류에서Dev

sass 함수와 함께 사용할 때 Sass 나누기가 작동하지 않습니다.

분류에서Dev

lxml etree와 함께 Xpath를 사용할 때 목록을 직렬화 할 수 없음 오류

분류에서Dev

생성자와 함께 액세스 수정자를 사용하지 않고 사용할 때 다른 결과

분류에서Dev

JavaScript : 참조 된 함수를 사용할 때 짝수 핸들러에서 $ (this) 가져 오기

분류에서Dev

사용자가 텔레 그램 봇에 유효한 응답을 할 때까지 함수와 핸들러를 반복하는 방법은 무엇입니까?

분류에서Dev

PHP 클로저 : 함수 정의와 함께 키워드 사용 : 사용할 객체 인수 : 매개 변수가 복사되지 않음

분류에서Dev

완료 핸들러에 변수가 설정되지 않았습니다.

분류에서Dev

Microsoft Graph API를 사용하여 Teams와 함께 그룹을 나열 할 때 필터가 작동하지 않음

분류에서Dev

C에서 초기화되지 않은 변수와 함께 적용된 XOR 연산자

분류에서Dev

@pyqtSlot ()은 다른 데코레이터와 함께 사용할 때 잘못된 핸들러 메서드가 호출되도록합니다.

분류에서Dev

.on 이벤트를 사용할 때 jQuery 함수가 연결되지 않음

분류에서Dev

IEqualityComparer를 사용할 때 Custom Equals 함수가 호출되지 않음

분류에서Dev

modules.exports 함수를 사용할 때 Cordova 후크가 실행되지 않음

분류에서Dev

ASP.NET 및 C # : Response.Redirect와 함께 사용할 때 MessageBox가 표시되지 않음

분류에서Dev

SpringBootTest와 함께 사용할 때 Spring Boot Embedded Tomcat이 시작되지 않음

분류에서Dev

변수가 설정되지 않은 경우 함수를 사용하여 변수 초기화-PHP

분류에서Dev

jquery-ui.js와 함께 jquery.js를 사용할 때 '정의되지 않은 것은 함수가 아닙니다'

Related 관련 기사

  1. 1

    제네릭 및 완료 핸들러와 함께 싱글 톤을 사용할 때 컴파일 오류

  2. 2

    "watch"와 함께 사용할 때 "awk"가 작동하지 않음

  3. 3

    DispatchQueue와 함께 완료 핸들러 사용

  4. 4

    함수가 완료 될 때까지 동적으로로드 된 JS를 사용할 수 없음

  5. 5

    유효성 검사기를 포함 할 때 초기화되지 않은 상수

  6. 6

    AngularJS와 함께 사용할 때 href가 렌더링되지 않음

  7. 7

    초기화 함수를 호출 할 때 $ scope 변수가 인식되지 않습니다.

  8. 8

    다음 완료 핸들러를 사용하여 함수를 어떻게 호출합니까?

  9. 9

    -O1 최적화와 함께 gcc를 사용할 때. 배열 데이터 초기화가 무시되고 배열을 사용하려고하면 초기화되지 않은 데이터로 끝납니다.

  10. 10

    이벤트 핸들러에서 사용될 때 정의되지 않은 함수

  11. 11

    ui-router와 함께 대상 '_blank'를 사용할 때 정의되지 않음

  12. 12

    group_modify와 함께 사용할 때 그룹화 변수를 유지하도록 dplyr group_by 함수 관리

  13. 13

    sass 함수와 함께 사용할 때 Sass 나누기가 작동하지 않습니다.

  14. 14

    lxml etree와 함께 Xpath를 사용할 때 목록을 직렬화 할 수 없음 오류

  15. 15

    생성자와 함께 액세스 수정자를 사용하지 않고 사용할 때 다른 결과

  16. 16

    JavaScript : 참조 된 함수를 사용할 때 짝수 핸들러에서 $ (this) 가져 오기

  17. 17

    사용자가 텔레 그램 봇에 유효한 응답을 할 때까지 함수와 핸들러를 반복하는 방법은 무엇입니까?

  18. 18

    PHP 클로저 : 함수 정의와 함께 키워드 사용 : 사용할 객체 인수 : 매개 변수가 복사되지 않음

  19. 19

    완료 핸들러에 변수가 설정되지 않았습니다.

  20. 20

    Microsoft Graph API를 사용하여 Teams와 함께 그룹을 나열 할 때 필터가 작동하지 않음

  21. 21

    C에서 초기화되지 않은 변수와 함께 적용된 XOR 연산자

  22. 22

    @pyqtSlot ()은 다른 데코레이터와 함께 사용할 때 잘못된 핸들러 메서드가 호출되도록합니다.

  23. 23

    .on 이벤트를 사용할 때 jQuery 함수가 연결되지 않음

  24. 24

    IEqualityComparer를 사용할 때 Custom Equals 함수가 호출되지 않음

  25. 25

    modules.exports 함수를 사용할 때 Cordova 후크가 실행되지 않음

  26. 26

    ASP.NET 및 C # : Response.Redirect와 함께 사용할 때 MessageBox가 표시되지 않음

  27. 27

    SpringBootTest와 함께 사용할 때 Spring Boot Embedded Tomcat이 시작되지 않음

  28. 28

    변수가 설정되지 않은 경우 함수를 사용하여 변수 초기화-PHP

  29. 29

    jquery-ui.js와 함께 jquery.js를 사용할 때 '정의되지 않은 것은 함수가 아닙니다'

뜨겁다태그

보관