'[UInt32]'유형의 값을 첨자 할 수 없습니다.

톰 폭스

무작위로 생성 된 숫자 배열이 있으며 선택한 숫자 배열의 색인 [0]에있는 값과 동일한 질문에 대해 Firebase에 쿼리하려고합니다. 현재 문제는 오류가 발생한다는 것 Cannot subscript a value of type '[UInt32]'입니다. 추신 : 나는 신속하게 경험이 많지 않으므로 정확한 코드 솔루션은 매우 가치가 있습니다! 내 firebase 구조도 첨부했습니다 ...

import UIKit
import Firebase

class QuestionViewController: UIViewController {


let ref = Firebase(url: "https://123test123.firebaseio.com/questions")

override func viewDidLoad() {
    super.viewDidLoad()

    // An empty array to hold the selected numbers
    var selectedNumbers: [UInt32] = []

    // A range of acceptable numbers
    let randomNumberRange = 1...10

    // How many numbers are needed?
    let randomNumbersToChoose = 10

    // Crash if asking for more numbers than are available in the range
    assert(randomNumberRange.count >= randomNumbersToChoose, "Must have enough numbers to choose from!")

    // Repeat this loop until all enough numbers have been selected
    while selectedNumbers.count < randomNumbersToChoose {

        // Pick a random number within the allowed range
        let selectedNumber = arc4random_uniform(UInt32(randomNumberRange.endIndex - randomNumberRange.startIndex)) + UInt32(randomNumberRange.startIndex)

        // If it's not already in the selected array, add it
        if (selectedNumbers.indexOf(selectedNumber) == nil) {
            selectedNumbers.append(selectedNumber)
        }
    }

    // Print the result
    print(selectedNumbers)


        print(selectedNumbers)
        let selectedNumberIndex: UInt32 = 2
        ref.queryOrderedByChild("value").queryEqualToValue(selectedNumbers[0])
            .observeEventType(.ChildAdded, withBlock: {
                snapshot in
                //Do something with the question
                print(snapshot.key)
                print(snapshot.value.valueForKey("question"))
            })
    }

@IBAction func truepressed(sender: AnyObject) {
}

@IBAction func falsePressed(sender: AnyObject) {
}

}

JSON 데이터 :

{
  "question1" : {
    "answer" : "Nohghpe",
    "question" : "Do you know swift",
    "value" : 1
  },
  "question10" : {
    "answer" : "A fdsbit",
    "question" : "Do you kndfggow firebase",
    "value" : 10
  },
  "question2" : {
    "answer" : "A bfhit",
    "question" : "Dodhfg you know firebase",
    "value" : 2
  },
  "question3" : {
    "answer" : "A bsdit",
    "question" : "Do you know firebsgdfase",
    "value" : 3
  },
  "question4" : {
    "answer" : "A vcxbit",
    "question" : "Do yosgfdu know firebase",
    "value" : 4
  },
  "question5" : {
    "answer" : "A bivcxt",
    "question" : "Do you kfghnow firebase",
    "value" : 5
  },
  "question6" : {
    "answer" : "A bxcvit",
    "question" : "Do you know fnhirebase",
    "value" : 6
  },
  "question7" : {
    "answer" : "A bivxct",
    "question" : "Do you sgdfknow firebase",
    "value" : 7
  },
  "question8" : {
    "answer" : "A bivcxt",
    "question" : "Do you knsfdow firebase",
    "value" : 8
  },
  "question9" : {
    "answer" : "A bdsfit",
    "question" : "Do you kdfgnow ffsdirebase",
    "value" : 9
  }
}
dfrib

이것은 Swift 컴파일러가 다른 오류 뒤에있는 실제 오류를 가리는 전형적인 상황입니다. .queryEqualToValue(..)방법 유형의 인수를 기대한다 AnyObject; 이는 참조 (클래스) 유형 만 보유 할 수있는 반면 UInt32값 유형입니다.

혼란의 또 다른 주제는 우리가 일반적으로 사실을 사용하고 있다는 수 AnyObject종류, 수 보이는 개최 Int사실 이러한 과제에 암시 적으로 스위프트 기본 변환 유형을 Int재단에 값 형식 __NSCFNumber참조 형식을. 그러나이 암시 적 변환은 UInt32유형에 사용할 수 없습니다 .

var a : AnyObject?
let foo : [Int] = [1, 2, 3]
let bar : [UInt32] = [1, 2, 3]

/* OK: Int -> [implicitly] -> __NSCFNumber */
a = foo[0]
print(a!.dynamicType) // __NSCFNumber

/* Not OK */
a = bar[0]
/* error: cannot subscript a value of type '[UInt32]' a = bar[0] */

따라서 다음과 같이이 문제를 해결할 수 있습니다.

  1. 분들께 selectedNumbers배열 0F 할 Int것이 아니라, UInt32(그에 따라 코드의 영향을받는 부분을 수정).

  2. 에 대한 호출 에서에서 UInt32유형 변환을 수행합니다 . 예 : 위의 예에서 :Int.queryEqualToValue(..)

    a = Int(bar[0])
    

    그냥 32 비트 시스템 (예를 들어, 아이폰 5)에 대해, 숫자의 절반 상위 범위에 의해 표현 가능한 것을주의 걸릴 UInt32으로 표현 될 수없는 유형의 Int32 비트 시스템에서, 이후 유형을 Int대응에 Int32.

    INT32_MAX   // 2147483647
    UINT32_MAX  // 4294967295
    

    코드에 잠깐 눈에서, 그러나,의 요소로이 여기에 문제가 될 수 있어야 것처럼 보이지 않는다 selectedNumbers더 큰 숫자가 되듯이 포함되지 않습니다 UInt32확인을로, 64 비트 시스템 (및 Int에 해당합니다 Int64). 그러나이 옵션을 선택하는 경우 모범 사례 를 위해 응용 프로그램을 실행하려는 시스템 UInt32Int유형으로 값을 나타낼 수 있다는 것을 변환 전에 어설 션 해야합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

"UInt32"유형의 인덱스를 사용하여 [String] 유형의 값을 첨자 할 수 없습니다.

분류에서Dev

swift 'in_addr_t'(일명 'UInt32') 유형의 값을 예상 인수 유형 'UnsafeMutablePointer <in_addr_t>!'로 변환 할 수 없습니다.

분류에서Dev

Swift3 JSON 오류-AnyObject 유형의 값을 첨자 할 수 없습니다.

분류에서Dev

'(UInt32, UnsafePointer <Int8>, UInt, [CChar], Int, UnsafeMutablePointer <CUnsignedChar>) 유형의 인수 목록을 사용하여'CCHmac '을 호출 할 수 없습니다.

분류에서Dev

'문자열'유형의 인덱스를 사용하여 '[CustomObject]'유형의 값을 첨자 할 수 없습니다.

분류에서Dev

'()'유형의 인덱스로 '[Int]'유형의 값을 첨자 할 수 없습니다.

분류에서Dev

'AnyObject'유형의 인덱스로 '[AnyObject]'유형의 값을 첨자 할 수 없습니다.

분류에서Dev

클래스 첨자는 함수가 아닌 유형의 값을 호출 할 수 없습니다.

분류에서Dev

SQLite.swift-행 유형의 값을 첨자 할 수 없습니다. 스위프트 2

분류에서Dev

'Swift.UInt32'유형의 값을 'Swift.Int'로 캐스팅 할 수 없습니다.

분류에서Dev

'int'유형의 값을 예상 인수 유형 'UInt'로 변환 할 수 없습니다.

분류에서Dev

문자열 유형의 값을 지정할 수 없습니다! String 유형의 값으로

분류에서Dev

문자열 유형의 값을 지정할 수 없습니다! String 유형의 값으로

분류에서Dev

Swift에서 String 유형 배열을 Float 유형 배열로 변환 'Double'유형의 첨자에 'String'유형의 값을 할당 할 수 없음

분류에서Dev

오류 : "[문자열]"유형의 값을 예상 인수 유형 "문자열"로 변환 할 수 없습니다.

분류에서Dev

'MyViewController'유형의 값을 'UITextFieldDelegate?'유형의 값에 할당 할 수 없습니다.

분류에서Dev

NSArray 유형의 값에 json 유형의 값을 할당 할 수 없습니다.

분류에서Dev

NSDictionary 유형의 값을 NSDictionary 유형의 값에 할당 할 수 없습니다.

분류에서Dev

'[문자열]'유형의 값을 변환 할 수 없습니다. 예상되는 인수 유형 'String'Swift

분류에서Dev

문자열 유형의 값을 예상 인수 유형 NSManagedObject로 변환 할 수 없습니다.

분류에서Dev

문자열 유형의 값을 예상 인수 유형 Int로 변환 할 수 없습니다.

분류에서Dev

'String.SubSequence'유형의 인수 (일명 'Substring')로 '[String : [String]]'유형의 값을 첨자 할 수없는 이유는 무엇입니까?

분류에서Dev

"아래 첨자의 모호한 사용"을 해결할 수 없습니다.

분류에서Dev

'문자열'유형의 값을 할당 할 수 없습니다. '문자열'을 입력하려면

분류에서Dev

비 함수 유형 '((UInt)-> Data?)!'의 값을 호출 할 수 없습니다. Alamofire 4 사용

분류에서Dev

'some View'유형에 'MenuView'유형의 값을 할당 할 수 없습니다.

분류에서Dev

Bool 유형의 값을 String Database Representation 유형에 할당 할 수 없습니다.

분류에서Dev

'some View'유형에 'some View'유형의 값을 할당 할 수 없습니다.

분류에서Dev

'Int'유형에 'Int'유형의 값을 할당 할 수 없습니다.

Related 관련 기사

  1. 1

    "UInt32"유형의 인덱스를 사용하여 [String] 유형의 값을 첨자 할 수 없습니다.

  2. 2

    swift 'in_addr_t'(일명 'UInt32') 유형의 값을 예상 인수 유형 'UnsafeMutablePointer <in_addr_t>!'로 변환 할 수 없습니다.

  3. 3

    Swift3 JSON 오류-AnyObject 유형의 값을 첨자 할 수 없습니다.

  4. 4

    '(UInt32, UnsafePointer <Int8>, UInt, [CChar], Int, UnsafeMutablePointer <CUnsignedChar>) 유형의 인수 목록을 사용하여'CCHmac '을 호출 할 수 없습니다.

  5. 5

    '문자열'유형의 인덱스를 사용하여 '[CustomObject]'유형의 값을 첨자 할 수 없습니다.

  6. 6

    '()'유형의 인덱스로 '[Int]'유형의 값을 첨자 할 수 없습니다.

  7. 7

    'AnyObject'유형의 인덱스로 '[AnyObject]'유형의 값을 첨자 할 수 없습니다.

  8. 8

    클래스 첨자는 함수가 아닌 유형의 값을 호출 할 수 없습니다.

  9. 9

    SQLite.swift-행 유형의 값을 첨자 할 수 없습니다. 스위프트 2

  10. 10

    'Swift.UInt32'유형의 값을 'Swift.Int'로 캐스팅 할 수 없습니다.

  11. 11

    'int'유형의 값을 예상 인수 유형 'UInt'로 변환 할 수 없습니다.

  12. 12

    문자열 유형의 값을 지정할 수 없습니다! String 유형의 값으로

  13. 13

    문자열 유형의 값을 지정할 수 없습니다! String 유형의 값으로

  14. 14

    Swift에서 String 유형 배열을 Float 유형 배열로 변환 'Double'유형의 첨자에 'String'유형의 값을 할당 할 수 없음

  15. 15

    오류 : "[문자열]"유형의 값을 예상 인수 유형 "문자열"로 변환 할 수 없습니다.

  16. 16

    'MyViewController'유형의 값을 'UITextFieldDelegate?'유형의 값에 할당 할 수 없습니다.

  17. 17

    NSArray 유형의 값에 json 유형의 값을 할당 할 수 없습니다.

  18. 18

    NSDictionary 유형의 값을 NSDictionary 유형의 값에 할당 할 수 없습니다.

  19. 19

    '[문자열]'유형의 값을 변환 할 수 없습니다. 예상되는 인수 유형 'String'Swift

  20. 20

    문자열 유형의 값을 예상 인수 유형 NSManagedObject로 변환 할 수 없습니다.

  21. 21

    문자열 유형의 값을 예상 인수 유형 Int로 변환 할 수 없습니다.

  22. 22

    'String.SubSequence'유형의 인수 (일명 'Substring')로 '[String : [String]]'유형의 값을 첨자 할 수없는 이유는 무엇입니까?

  23. 23

    "아래 첨자의 모호한 사용"을 해결할 수 없습니다.

  24. 24

    '문자열'유형의 값을 할당 할 수 없습니다. '문자열'을 입력하려면

  25. 25

    비 함수 유형 '((UInt)-> Data?)!'의 값을 호출 할 수 없습니다. Alamofire 4 사용

  26. 26

    'some View'유형에 'MenuView'유형의 값을 할당 할 수 없습니다.

  27. 27

    Bool 유형의 값을 String Database Representation 유형에 할당 할 수 없습니다.

  28. 28

    'some View'유형에 'some View'유형의 값을 할당 할 수 없습니다.

  29. 29

    'Int'유형에 'Int'유형의 값을 할당 할 수 없습니다.

뜨겁다태그

보관