gpt4 book ai didi

swift - 我的滚动虽然通常很顺利,但有时会很不稳定

转载 作者:行者123 更新时间:2023-11-30 10:12:09 24 4
gpt4 key购买 nike

以下是我的代码。我读到使用 NSDateFormatters 很昂贵,但我不确定这是否是最终导致问题的原因。

这是我的代码。

func tableViewOld(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!, object: PFObject!) -> UITableViewCell! {

let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell

if cell.backgroundView == nil {
cell.backgroundView = UIImageView(frame: cell.contentView.bounds)
cell.backgroundView?.contentMode = UIViewContentMode.ScaleToFill
cell.backgroundView?.clipsToBounds = true
cell.contentView.backgroundColor = UIColor.clearColor()

}

let backgroundImageView = cell.backgroundView as! UIImageView
backgroundImageView.image = UIImage(named: "nobg")
var image : UIImage = UIImage(named:"goodbg")!
cell.nopebutton.tag = indexPath.row
cell.nicebutton.tag = indexPath.row
cell.messageButton.tag = indexPath.row
cell.mText.text = object.valueForKey("text") as? String
let count = object.valueForKey("replies") as! Int
cell.replies.text = "\(count)"
cell.replies.textColor = UIColor.whiteColor()
let point = object["location"] as! PFGeoPoint
let location = CLLocation(latitude: point.latitude, longitude: point.longitude)

let currentLocation = CLLocation(latitude: currLocation!.latitude, longitude: currLocation!.longitude)
let distance = currentLocation.distanceFromLocation(location)

if distance < 50 {
// TODO: Fill
cell.locationButton.text = "Nearby"
} else {
let distanceFormatter = MKDistanceFormatter()
distanceFormatter.unitStyle = MKDistanceFormatterUnitStyle.Abbreviated

cell.locationButton.text = distanceFormatter.stringFromDistance(distance) + " away"
}

cell.layoutMargins = UIEdgeInsetsZero


let score = object.valueForKey("count") as! Int
cell.count.text = "\(score)"
if cell.count.text?.toInt() == 0
{

cell.messages.imageView?.image = UIImage(named:"0")
cell.chatbubble.image = UIImage(named:"ch")
cell.bg.image = UIImage(named: "regular")
cell.locationButton.textColor = UIColor.blackColor()
cell.mText.textColor = UIColor(red: 126.0/255, green: 126.0/255, blue: 126.0/255, alpha: 1)
cell.nicebutton!.setImage(UIImage(named:"ups"), forState: UIControlState.Normal)
cell.nopebutton!.setImage(UIImage(named:"downs"), forState: UIControlState.Normal)
cell.count.textColor = UIColor.whiteColor()
cell.time.textColor = UIColor(red: 52.0/255, green: 152.0/255, blue: 219.0/255, alpha: 1)
}
if cell.count.text?.toInt() > 0
{
cell.messages.imageView?.image = UIImage(named:"1")
cell.chatbubble.image = UIImage(named:"chg")
cell.bg.image = UIImage(named: "gtrl")
cell.time.textColor = UIColor(red: 42.0/255, green: 204.0/255, blue: 113.0/255, alpha: 1)
cell.locationButton.textColor = UIColor.blackColor()
cell.mText.textColor = UIColor(red: 42.0/255, green: 204.0/255, blue: 113.0/255, alpha: 1)
cell.count.textColor = UIColor.whiteColor()
}



if cell.count.text?.toInt() < 0
{
cell.messages.imageView?.image = UIImage(named:"-1")
cell.bg.image = UIImage(named: "ntrl")
cell.chatbubble.image = UIImage(named:"chr")
cell.locationButton.textColor = UIColor.blackColor()
cell.time.textColor = UIColor(red: 231.0/255, green: 76.0/255, blue: 50.0/255, alpha: 1)
cell.mText.textColor = UIColor(red: 231.0/255, green: 76.0/255, blue: 50.0/255, alpha: 1)
cell.count.textColor = UIColor.whiteColor()
}

if cell.count.text?.toInt() >= 100
{
cell.messages.imageView?.image = UIImage(named:"100")
cell.chatbubble.image = UIImage(named:"chb")
cell.locationButton.textColor = UIColor.blackColor()
cell.time.textColor = UIColor(red: 249.0/255, green: 194.0/255, blue: 65.0/255, alpha: 1)
cell.mText.textColor = UIColor(red: 249.0/255, green: 194.0/255, blue: 65.0/255, alpha: 1)
cell.bg.image = UIImage(named: "neutral")
cell.count.textColor = UIColor.whiteColor()
}

if let dict : NSDictionary = NSUserDefaults.standardUserDefaults().objectForKey("userNiceNopeDictionary") as? NSDictionary {
cell.nicebutton.enabled = true
cell.nopebutton.enabled = true
if let nice = dict[object.objectId] as? Bool{
if nice {
cell.nicebutton.enabled = false
}
else {
cell.nopebutton.enabled = false
}
}
}
if let user = PFUser.currentUser() {
user["createdBy"] = user.username
//user.saveInBackground()


}
let dateUpdated = object.createdAt as NSDate
let dateFormat = NSDateFormatter()
dateFormat.dateFormat = "h:mm a"
cell.time.text = (NSString(format: "%@", dateFormat.stringFromDate(dateUpdated)) as String) as String
let replycnt = object.objectForKey("replies") as! Int



if cell.count.text == "\(-10)"
{
object.deleteInBackground()
}

return cell

}

我正在使用这个扩展。

extension NSDate
{
func hour() -> Int
{
//Get Hour
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour, fromDate: self)
let hour = components.hour

//Return Hour
return hour
}


func minute() -> Int
{
//Get Minute
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitMinute, fromDate: self)
let minute = components.minute

//Return Minute
return minute
}

func toShortTimeString() -> String
{
//Get Short Time String
let formatter = NSDateFormatter()
formatter.timeStyle = .ShortStyle
let timeString = formatter.stringFromDate(self)

//Return Short Time String
return timeString
}

}

有什么办法可以优化这个吗?同样,这并不是一直滞后,只是有时会发生,但总的来说似乎没问题。我希望永远一切都好。我再次觉得 NSDateFormatter 可能是问题所在,但我不太确定。

最佳答案

您在 cellForRow 方法中做了很多事情。作为比较,我的 cellForRow 方法由大约 5 行代码组成。您应该考虑创建一个自定义单元类来删除大量代码。代码太多只会让找出问题原因变得更加困难。

配置文本字段的代码的每个部分都可以是一个新函数。只是,每个函数的目标是 10 行代码。如果您有更多内容,请将内容移至新函数中(这是有意义的)。

可能导致该问题的原因是每次使用 toShortTimeString 方法时都会创建 NSDateFormatter

事实上,我刚刚看到您正在自己创建另一个 NSDateFormatter 。创建 NSDateFormatter 是一件昂贵的事情。您应该创建一个作为 TableViewController 的属性,并一遍又一遍地使用它,而不是一次又一次地创建它。

这似乎可能是问题所在,但您的函数太大,无法阅读全部内容。也要努力解决这个问题。

函数所需的行数... 3.

  • 1 使单元出队。
  • 1 调用函数来配置单元
  • 1 返回单元格

关于swift - 我的滚动虽然通常很顺利,但有时会很不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32380215/

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