Skip to main content
 首页 » 操作系统

ios之以数组形式快速从解析中提取数据

2024年01月01日51luoye11

我在名为“Competitions”的解析类中有一个竞赛列表,我需要从该类中提取竞赛列表以填充数组以填充 UI PickerView。完成此操作的最简单方法是什么?

谢谢。

//用代码编辑

    override func viewDidLoad() { 
    super.viewDidLoad() 
    var compQuery = PFQuery(className:"Competitions") 
    compQuery.whereKey("teamID", equalTo:"1") 
    compQuery.findObjectsInBackgroundWithBlock { 
        (competitions: [AnyObject]!, error: NSError!) -> Void in 
        if error == nil { 
            // Do something with the found objects 
            for competition in competitions { 
                NSLog("%@", competition["compName"] as String) 
                self.competitionArray += [competition["compName"] as String] 
            } 
        } else { 
            // Log details of the failure 
            NSLog("Error: %@ %@", error, error.userInfo!) 
        } 
    } 
} 

//编辑后有新的错误 由于我将对象添加到 UIPicker 以供用户选择一个值,因此我使用它来获取对象作为字符串数组,

var competitionArrayString:Array = [competitionArray as AnyObject as [String]] 

但是我收到错误消息说我的类(class)没有成员“competitionArray”

import UIKit 
import Swift 
import Parse 
 
class CompetitionViewController: UIViewController  { 
var competitionArrayString:Array = [""] 
var competitionArray:NSMutableArray = [] 
 
override func viewDidLoad() { 
    super.viewDidLoad() 
    var compQuery = PFQuery(className:"Competitions") 
    compQuery.whereKey("teamID", equalTo:"1") 
 
    self.competitionArray = NSMutableArray() 
 
    compQuery.findObjectsInBackgroundWithBlock { 
        (competitions: [AnyObject]!, error: NSError!) -> Void in 
        if error == nil { 
            // Do something with the found objects 
            for competition in competitions { 
                NSLog("%@", competition["compName"] as String) 
                self.competitionArray.addObject([competition["compName"] as String]) 
            } 
        } else { 
            // Log details of the failure 
            NSLog("Error: %@ %@", error, error.userInfo!) 
        } 
    } 
} 
 
var competitionArrayString:Array = [competitionArray as AnyObject as [String]] 
 
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 
 
 
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return competitionArrayString.count 
} 
 
 
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 
    return competitionArrayString[row] 
} 
 
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) 
{ 
    var selectedData = competitionArrayString[row] 
    var userDefaults = NSUserDefaults.standardUserDefaults() 
    userDefaults.setValue(selectedData, forKey: "competitionData"); 
    userDefaults.synchronize(); 
 
    println("You Selected: \(selectedData)") 
 
 
} 
 
} 

请您参考如下方法:

(1) 要在 Swift 中将元素添加到数组中,您必须使用 addObject,而不是 += 并且 (2) 您确保正在初始化您的数组,例如:

override func viewDidLoad() { 
    super.viewDidLoad() 
    var compQuery = PFQuery(className:"Competitions") 
    compQuery.whereKey("teamID", equalTo:"1") 
 
    self.competitionArray = NSMutableArray() 
 
    compQuery.findObjectsInBackgroundWithBlock { 
        (competitions: [AnyObject]!, error: NSError!) -> Void in 
        if error == nil { 
            // Do something with the found objects 
            for competition in competitions { 
                NSLog("%@", competition["compName"] as String) 
                self.competitionArray.addObject(competition["compName"] as String) 
            } 
            self.pickerControl.reloadAllComponents()  // <- reload your picker's data 
        } else { 
            // Log details of the failure 
            NSLog("Error: %@ %@", error, error.userInfo!) 
        } 
    } 
}