我的应用程序创建了一个UITableViewController,它包含一个可能具有任意高度的自定义tableHeaderView.我一直在努力设置动态设置此标头,因为似乎建议的方法是缩短此标头.我的UITableViewController的相关代码:
import UIKit
import SafariServices
class RedditPostViewController: UITableViewController, NetworkCommunication, SubViewLaunchLinkManager {
//MARK: UITableViewDataSource
var post: PostData?
var tree: CommentTree?
weak var session: Session! = Session.sharedInstance
override func viewDidLoad() {
super.viewDidLoad()
// Get post info from api
guard let postData = post else { return }
//Configure comment table
self.tableView.registerClass(RedditPostCommentTableViewCell.self, forCellReuseIdentifier: "CommentCell")
let tableHeader = PostView(withPost: postData, inViewController: self)
let size = tableHeader.systemLayoutSizeFittingSize(UILayoutFittingExpandedSize)
let height = size.height
let width = size.width
tableHeader.frame = CGRectMake(0, 0, width, height)
self.tableView.tableHeaderView = tableHeader
session.getRedditPost(postData) …Run Code Online (Sandbox Code Playgroud) Xcode抱怨它"无法分配Node类型的值来输入Node <_>?" 在第23,24,26,27行(enqueue的条件部分中'node'到'top'和'bottom'的赋值).我不确定这意味着什么,以及为什么Xcode会看到节点类型和顶部/底部的差异
class Node<T> {
var key: T?
weak var next: Node<T>?
weak var previous: Node<T>?
init(key: T, previous: Node? = nil) {
self.key = key
self.previous = previous
}
}
class Dequeue<T> {
private var count: Int = 0
private weak var top: Node<T>?
private weak var bottom: Node<T>?
func enqueue<T>(val: T) {
// if dequeue is empty
let node = Node<T>(key: val)
if top == nil {
self.top = node
self.bottom = node
} else {
self.bottom?.next …Run Code Online (Sandbox Code Playgroud) index = [x for x in range(0,81)]
membership_columns = {
'column_0': index[0:81:9]
'column_1': index[1:81:9]
'column_2': index[2:81:9]
'column_3': index[3:81:9]
'column_4': index[4:81:9]
'column_5': index[5:81:9]
'column_6': index[6:81:9]
'column_7': index[7:81:9]
'column_8': index[8:81:9]
}
Run Code Online (Sandbox Code Playgroud)
有可能将其压缩成词典理解吗?另外,第1行的列表理解是否必要?我不确定如何将每个键单独转换为列表理解.