繁体   English   中英

iOS / Swift / Parse-结构未存储数据

[英]iOS/Swift/Parse - Struct not storing data

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

控制台输出

resultsArray.count = 45个已填充的objectList.count = 1个索引处的对象0.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")
  } 
}

结构连接到解析

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

      }
    }
  }      
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM