小编Mar*_*sel的帖子

Swift - 断言失败 - [UITableView _configureCellForDisplay:forIndexPath:]

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell运行几次后我收到错误.
这是事情:我创建了一个teacherArray包含用于单元格的数据,它肯定包含我需要的东西.
我使用故事板来定制单元格和tableview.我已经检查了单元格的标识符是否已设置,我还为表格视图和标识检查器中的单元格定制了类.

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return teacherArray.count
}

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

    cell.nameLabel.text = teacherArray[indexPath.row].name
    cell.schoolLabel.text = teacherArray[indexPath.row].school
    cell.experienceLabel.text = teacherArray[indexPath.row].experience
    cell.courseLabel.text = teacherArray[indexPath.row].course

    println(indexPath.row)
    println(cell)

    return cell
}
Run Code Online (Sandbox Code Playgroud)

我已经跟踪了这个方法,它是在这个控制台输出之后:

6
PAL.SearchCell: 0x7bf32310; baseClass = UITableViewCell; frame = (0 450; …
Run Code Online (Sandbox Code Playgroud)

tableview ios swift

3
推荐指数
1
解决办法
2667
查看次数

自动布局 - 如何添加子视图以匹配UIView的大小?

我遇到了一个与Auto Layout相遇的问题.我有一个UIView设置了约束因此它对于每个大小类都处于相同的位置.我试图让我的视频完全适合这个UIView videoViewBox.我只在iPhone 6上工作,但是如果我切换到iPhone 4S/5,视频就不再对齐了.

这是代码:

    var moviePlayer: MPMoviePlayerController!

    @IBOutlet var videoViewBox: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let path = NSBundle.mainBundle().pathForResource("tutorial", ofType: "mov")
        let url = NSURL.fileURLWithPath(path!)
        moviePlayer = MPMoviePlayerController(contentURL: url)
        moviePlayer.view.frame = CGRect(x: 10, y: 50, width: 255, height: 400)
        videoViewBox.addSubview(moviePlayer.view)

        moviePlayer.fullscreen = true
        moviePlayer.controlStyle = MPMovieControlStyle.None
    }
Run Code Online (Sandbox Code Playgroud)

我尝试设置的值CGRect与值动态videoViewBox.frame.origin.xvideoViewBox.frame.origin.y,但它也不对齐.

我该怎么做呢?谢谢你的帮助!

ios autolayout swift

3
推荐指数
1
解决办法
3123
查看次数

需要帮助理解实例变量

我在班上有这些实例变量:

private int x1 = 0;
private int y1 = 0;
private int x2 = 0;
private int y2 = 0;
private int height = y2 - y1;
private int width = x2 - x1;
Run Code Online (Sandbox Code Playgroud)

在我的程序中,我使用改变xs和ys的方法,所以我期望heightwidth改变.但是,他们没有.有人可以解释为什么会这样,以及如何在更改xs和ys 的方法调用之后使其值"更新" ?

java

2
推荐指数
1
解决办法
45
查看次数

嵌套函数崩溃Swift编译器

我写了一个递归mergeSort函数:

func mergeSort<T: Comparable>(inout array: [T]) {
    if array.count <= 1 {
        return
    }

    var leftSlice = [T](array[0..<array.count / 2])
    var rightSlice = [T](array[array.count / 2...array.endIndex - 1])

    mergeSort(&leftSlice)
    mergeSort(&rightSlice)
    array = merge(leftSlice, rightSlice)
}

func merge<T: Comparable>(var left: [T], var right: [T]) -> [T] {
    var mergedValues = [T]()

    while !left.isEmpty && !right.isEmpty {
        mergedValues.append(left.first! < right.first! ? left.removeAtIndex(0) : right.removeAtIndex(0))
    }

    if !left.isEmpty {
        mergedValues += left
    } else if !right.isEmpty {
        mergedValues += right
    } …
Run Code Online (Sandbox Code Playgroud)

generics mergesort nested nested-generics swift

2
推荐指数
1
解决办法
277
查看次数

如何将函数添加到Swift作为String的扩展以简化使用

我有一个函数编码为:

func deleteEnclosedString(s: String, startString s1:String, endString s2: String) -> String { 
} 
Run Code Online (Sandbox Code Playgroud)

我想创建一个class子类,String在其中我定义一个函数并使用如下:

var myString = "A [typical] string"
myString.deleteEnclosedString(startString: "[", endString: "]")
Run Code Online (Sandbox Code Playgroud)

string swift

2
推荐指数
1
解决办法
154
查看次数

问题使用Swift中的prepareForSegue方法传递自定义单元格的内容

我有一个UITableView包含标签的自定义单元格.我想要的是能够在选择行时将此标签的内容传递给第二个视图控制器.
我在没有自定义单元格的表格上运行的代码很好:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("reusableCell", forIndexPath: indexPath) as! CustomCell

    //labelDisplayLedQty is the name of the custom label
    cell.labelDisplayLedQty.text = inputLedQty.text

    return cell
}
Run Code Online (Sandbox Code Playgroud)

这是我在该prepareForSegue方法中的代码.正如我所说,如果我将它与不包含自定义单元格的表一起使用,此代码可以正常工作.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    let rowIndex: NSIndexPath = tableList.indexPathForSelectedRow!
    let selectedRow: UITableViewCell = tableList.cellForRowAtIndexPath(rowIndex)!
    let contentFromSelectedRow: String = selectedRow.textLabel!.text!

    if let secondVC = segue.destinationViewController as? DriverDetailsViewController where
       segue.identifier == "segueDriverDetails" {
        secondVC.messageContentFromMainController = contentFromSelectedRow + " This message is …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift

2
推荐指数
1
解决办法
539
查看次数

相等是否意味着哈希值相等?

我目前正在研究图形数据类型,在这种情况下,我思考了很多有关身份和平等的语义问题。

我现在的情况如下。我有一个Vertex类型:

final class Vertex<T>: Hashable {

  static func ==(lhs: Vertex, rhs: Vertex) -> Bool { 
    return lhs === rhs
  }

  var value: T

  var hashValue: Int { 
    return ObjectIdentifier(self).hashValue 
  }

}
Run Code Online (Sandbox Code Playgroud)

如您所见,平等是由身份决定的。我这样做是出于图数据类型特定的原因,但它基本上归结为这样一个事实:顶点应该通过其标识来查看,因此只有当它们是相同(相同顶点时才被视为相等。

现在哈希值也由身份确定(使用ObjectIdentifier)。这似乎是获取哈希值的最简单方法,并且似乎也与这种类型的相等概念很好地一致。

但这让我思考......
通过属性(如果符合)来确定哈希值在语义上是否“不正确”(或者不合逻辑,value如果你T愿意的话Hashable)。
在这种情况下,两个Vertexs 可以一致地具有相等的哈希值(不仅仅是程序的一次调用),而不被视为相等。这似乎不对。

那么反过来:说实例相等应该意味着它们的哈希值相等是否明智?

hash identity equality semantics swift

2
推荐指数
1
解决办法
867
查看次数

Swift Charts 的 ChartXVisibleDomain 挂起或崩溃

如果我在任何地方(Xcode Simulator、Playground 等)使用以下Swift Charts ,它会挂起或崩溃。 Chart一旦我删除chartXVisibleDomain修改器,一切都会正常。还有其他人遇到同样的问题和/或知道如何解决它吗?我使用的是 Xcode 版本 15.0 (15A240d)。

import SwiftUI
import Charts

struct ContentView: View {
    
    let data: [(day: Date, value: Int)] = [
        (Calendar.current.date(byAdding: .day, value: 0,   to: .now)!, 1),
        (Calendar.current.date(byAdding: .day, value: -1,  to: .now)!, 2),
        (Calendar.current.date(byAdding: .day, value: -3,  to: .now)!, 3),
        (Calendar.current.date(byAdding: .day, value: -10, to: .now)!, 4),
        (Calendar.current.date(byAdding: .day, value: -20, to: .now)!, 5)
    ]
    
    var body: some View {
        Chart(data, id: \.day) { (day, value) in
            BarMark(
                x: …
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-charts

2
推荐指数
1
解决办法
236
查看次数

如何在iOS项目中使用自定义框架?

我搜索了各种网站以找到解决这个问题的方法,并且没有找到一个真正适用于我的网站.

我所拥有的是一个自定义框架,它在Xcode的Derived Data文件夹中显示如下:

框架文件夹

如您所见,它是一个universal框架.根据我的理解,这意味着它可以用于实际的iOS设备 模拟器.

为了生成universal框架,我从一些教程中获得了以下运行脚本,我不记得了:

#CONFIG=${CONFIGURATION}
CONFIG=Release

# Step 1.
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIG}-universal
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

# Step 2.
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIG} -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="$BUILD_ROOT" clean build

xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIG} -sdk iphonesimulator -arch x86_64 -arch i386  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="$BUILD_ROOT" clean build

# Step 3.
cp -R "${BUILD_DIR}/${CONFIG}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"

cp -R "${BUILD_DIR}/${CONFIG}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/}" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"

# Step 4.
lipo -create -output  "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIG}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIG}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
Run Code Online (Sandbox Code Playgroud)

所以现在我有LanguageKit.framework.
我想在单个视图应用程序中使用此框架.

我如何在项目中包含框架?

xcode frameworks ios

1
推荐指数
1
解决办法
617
查看次数

如何获取特定的第二天和时间的 NSDate

我有一些需要计算NSDates 的事件。例如,我试图在下周一上午 8:00 到达。所以我尝试了一些东西,但没有任何效果:

1.

let nextMonday = NSCalendar.currentCalendar().dateBySettingUnit(NSCalendarUnit.Weekday, value: 2, ofDate: startDate, options: NSCalendarOptions.MatchNextTime)
let nextMondayEight = NSCalendar.currentCalendar().dateBySettingUnit(NSCalendarUnit.Hour, value: 8, ofDate: nextMonday!, options: NSCalendarOptions.MatchNextTime)
Run Code Online (Sandbox Code Playgroud)

我得到:

2016-04-12 05:00:00 +0000

那是星期二的 8:00(时差是我当地时间 GMT -3)。

2.

let unitFlags: NSCalendarUnit = [.Day, .Month, .Year]
let comp = NSCalendar.currentCalendar().components(unitFlags, fromDate: NSDate())
comp.timeZone = NSTimeZone.localTimeZone()
comp.weekday = 1
comp.hour = 8
comp.minute = 0
comp.second = 0
let compDate = NSCalendar.currentCalendar().dateFromComponents(comp)

print("time: \(compDate!)")
Run Code Online (Sandbox Code Playgroud)

我得到:

2016-04-11 05:00:00 +0000

那是今天的 8:00 而不是下周一的 8:00。


有什么建议?谢谢

nsdate ios swift

1
推荐指数
1
解决办法
384
查看次数