簡體   English   中英

無法將“__NSCFNumber”()類型的值快速轉換為“NSArray”

[英]Could not cast value of type '__NSCFNumber' () to 'NSArray' swift

為什么不能將 NSCFNumber (Core Data) 轉換為 NSArray?

錯誤:

無法將“__NSCFNumber”(XXXXXXXX)類型的值轉換為“NSArray”(XXXXXXXX)。

代碼:

//Fetch Settings
    func fetchAccounSetting(){
        let entityDescription = NSEntityDescription.entityForName("UserSettings", inManagedObjectContext: Context!)
        let request = NSFetchRequest()
        //let data = UserSettings(entity: entityDescription!, insertIntoManagedObjectContext: Context)
        request.entity = entityDescription

        var dataObjects: [AnyObject]?

        do {
            dataObjects = try Context?.executeFetchRequest(request)
        } catch  let error as NSError {
            print(error)
            dataObjects = nil
        }

        for result in dataObjects as! [NSManagedObject] {
            let dataSelected = NSArray(array: result.valueForKey("favCategory")! as! NSArray)
            print(dataSelected)
        }

更新:如何接收dataSelected的計數?

Core Data 一開始就不能存儲數組或字典。 我記得之前在學習時遇到過這個問題。

又名,您的dataObjects數組沒有任何可以類型轉換為NSArray 這樣做的方法是對一對多關系建模(創建一個Set ),它可以模仿一個數組。

result.valueForKey("favCategory")! 正在返回一個數字,但看起來您正在期待一個數組。

也許你的意思是:

let dataSelected = [result.valueForKey("favCategory")!]

如果您知道要返回的類型,則可以選擇強制轉換它:

let dataSelected = [result.valueForKey("favCategory")!]

if let dataSelected = dataSelected as? [NSNumber] {
    // dataSelected is of type [NSNumber] a.k.a. Array<NSNumber>
    print(dataSelected)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM