我在结构中存储来自Parse的数据时遇到问题。我已经设置了我的UITableViewController以使用单独的Struct文件从Parse获取/管理数据。结构最初从Parse获取数据(使用println确认),但是当我尝试引用数据来填充表时,结构再次为空。下面是2个文件(省略了几个方法,试着让它更简洁)。当我使用单独的类(而不是结构)来获取Parse数据时,我之前已经正常工作了,但是后来我决定结构会更好地满足我的需求。任何人都可以发现结构有什么问题吗?非常感谢。
resultsArray.count = 45填充objectList.count = 1个对象at index0.count = 45 testPrint objectList.count = 0
import UIKit
import Parse
class ExerciseMuscleTypeTableViewController: UITableViewController {
// MARK: Variables
var citadel: Citadel = Citadel()
// MARK: IBActions
@IBAction func refreshButton(sender: UIBarButtonItem) {
citadel.testPrint()
}
// MARK: Override
override func viewDidLoad() {
super.viewDidLoad()
citadel = Citadel(parseClassName: "ExerciseList", orderedBy: "MusclePrimary")
}
}
import Foundation
import Parse
struct Citadel {
// MARK: Properties
var objectList: [[PFObject]] = [[PFObject]]()
var sectionHeaders: [String] = [String]()
var parseClassName: String?
var userID: String?
// MARK: Methods
func testPrint() {
println("testPrint, objectList.count = \(self.objectList.count)")
}
// MARK: Init
init(parseClassName: String, orderedBy: String) {
// Set structure's properties
self.parseClassName = parseClassName
self.objectList = [[PFObject]]()
self.sectionHeaders.removeAll(keepCapacity: true)
if let id = PFUser.currentUser()!.objectId {
self.userID = id
}
// Format query to get data from Parse
var query = PFQuery(className: parseClassName)
query.orderByAscending(orderedBy)
query.findObjectsInBackgroundWithBlock { (queryResult: [AnyObject]?, error: NSError?) -> Void in
if let resultsArray = queryResult as? [PFObject] {
println("resultsArray.count = \(resultsArray.count)")
self.objectList = [resultsArray]
println("filled objectList.count = \(self.objectList.count)")
println("objects at index0.count = \(self.objectList[0].count)")
}
}
}
}
答案 0 :(得分:0)
我认为问题可能是因为您在此处将结构初始化为变量:var Citadel = Citadel()
,但您还要在viewDidLoad
中重新初始化它。我会尝试将您的var
声明为var Citadel: Citadel?
,然后像viewDidLoad
一样初始化它,看看是否可以帮助您解决问题。