首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS/Swift/Parse -结构不存储数据

iOS/Swift/Parse -结构不存储数据
EN

Stack Overflow用户
提问于 2015-07-27 12:42:03
回答 1查看 235关注 0票数 1

我很难在结构中存储来自Parse的数据。我已经将我的UITableViewController设置为使用单独的Struct文件从Parse获取/管理数据。struct最初从Parse (使用println确认)获取数据,但当我尝试引用数据填充表时,结构将再次为空。下面是两个文件(有几种方法忽略了让它在这里更简洁)。以前,当我使用一个单独的类(而不是struct)来获取Parse数据时,这个方法是正确的,但是后来我决定使用一个struct来满足我的需求。有人能发现这个结构出了什么问题吗?非常感谢。

控制台输出

resultsArray.count =45个填充的objectList.count =1个索引对象。计数= 45 testPrint objectList.count =0

UITableViewController

代码语言:javascript
复制
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的结构

代码语言:javascript
复制
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)")

      }
    }
  }      
}
EN

回答 1

Stack Overflow用户

发布于 2015-07-27 12:52:36

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31653401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档