簡體   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