iOS / Swift / Parse - Struct不存储数据

时间:2015-07-27 12:42:03

标签: ios swift parse-platform

我在结构中存储来自Parse的数据时遇到问题。我已经设置了我的UITableViewController以使用单独的Struct文件从Parse获取/管理数据。结构最初从Parse获取数据(使用println确认),但是当我尝试引用数据来填充表时,结构再次为空。下面是2个文件(省略了几个方法,试着让它更简洁)。当我使用单独的类(而不是结构)来获取Parse数据时,我之前已经正常工作了,但是后来我决定结构会更好地满足我的需求。任何人都可以发现结构有什么问题吗?非常感谢。

控制台输出

  

resultsArray.count = 45填充objectList.count = 1个对象at   index0.count = 45 testPrint objectList.count = 0

的UITableViewController

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")
  } 
}

连接到Parse的结构

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)")

      }
    }
  }      
}

1 个答案:

答案 0 :(得分:0)

我认为问题可能是因为您在此处将结构初始化为变量:var Citadel = Citadel(),但您还要在viewDidLoad中重新初始化它。我会尝试将您的var声明为var Citadel: Citadel?,然后像viewDidLoad一样初始化它,看看是否可以帮助您解决问题。