gpt4 book ai didi

php - Swift/PHP 如何使用 Alamofire 在 UITableView 中显示 mysql 数据(json)

转载 作者:可可西里 更新时间:2023-11-01 01:42:17 25 4
gpt4 key购买 nike

我想创建一个只返回一个单元格的 TableView。在这个单元格中包含三个标签:id、username 和 category。这将导致让用户看到他的基本详细信息。

当我运行应用程序时,我的 UITableView 仍然没有显示任何结果(空白)。

任何人都可以查看我的代码以使其正常工作吗?我看不出哪里错了,因为我在 Xcode 中没有收到任何错误

表格 View Controller

import UIKit
import Alamofire

class MyProfile: UITableViewController {

var users = [MyProfileBasicData]()

override func viewDidLoad() {
super.viewDidLoad()

}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
getData()
}

func getData() {
let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
var username = prefs.valueForKey("USERNAME") as NSString

Alamofire.request(.GET, "http://mysite/app/data/jsonuser.php", parameters: ["username": username]).responseJSON() { (_, _, data, error) in if let jsonResult = data as? Array<Dictionary<String, String>> {
var UserID = jsonResult [0]["Id"]
var username1 = jsonResult [0]["username"]
var category = jsonResult [0]["category"]

for result in jsonResult {
var userInfo = MyProfileBasicData()
userInfo.Id = jsonResult [0]["Id"]
userInfo.username = jsonResult [0]["username"]
userInfo.category = jsonResult [0]["category"]
self.users.append(userInfo)

}

dispatch_async(dispatch_get_main_queue(),

{ self.tableView.reloadData()
})
println(UserID)
println(username1)
println(category)
}
println(error)
}
func didReceiveMemoryWarning() {

}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {

return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return users.count
}
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath:
indexPath) as MyProfileCell

var user = users[indexPath.row]
cell.profileID?.text = user.Id
cell.profileUsername?.text = user.username
cell.profileCategory?.text = user.category

return cell
}
}

表格 View 单元格

import UIKit

class MyProfileCell: UITableViewCell {

@IBOutlet weak var profileCategory: UILabel!
@IBOutlet weak var profileID: UILabel!
@IBOutlet weak var profileUsername: UILabel!

override func awakeFromNib() {
super.awakeFromNib()

}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

}

}

数据

import Foundation

class MyProfileBasicData: NSObject {

var Id:String?
var username:String?
var category:String?


}

最佳答案

问题是 numberOfSectionsInTableViewnumberOfRowsInSection 被定义为 inside getData 方法。如果将它们从 getData 方法中拉出,它们应该会被成功调用。请注意,当您将它们拉出时,编译器现在应该会提示您需要添加 override(就像您为 cellForRowAtIndexPath 所做的那样)。


我基于标准表格 View 问题的原始回复如下。


两个可能的问题是:

  1. 未能指定 TableView 的委托(delegate):

    如果是这种情况,您的 UITableViewDataDelegate 方法将根本不会被调用。在这些例程中放置断点/日志语句并确认它们被调用。如果不是,请确认 TableView 的委托(delegate)和数据源属性已正确设置。

  2. 无法将 UITableViewCell 子类中的 @IBOutlet 引用连接到原型(prototype)单元格。

    如果是这种情况,自定义单元格属性,例如cell.profileID 等,在cellForRowAtIndexPath 中将为nil。如果它们是 nil,则返回到 Interface Builder 并将它们连接起来。

关于php - Swift/PHP 如何使用 Alamofire 在 UITableView 中显示 mysql 数据(json),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28646290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com