我有一个大型数组,需要通过键(查找)访问它,所以我需要创建字典.在Swift 3.0中是否有内置函数可以这样做,还是我需要自己编写?
首先,我将需要它用于具有键"String"的类,稍后我可以编写用于通用目的的模板版本(所有类型的数据和键).
我有一个排序的数组,并希望对它进行二进制搜索.
所以我问Swift库中是否已有类似等等的东西?或者是否有可用的独立版本?
当然我可以自己写,但我想避免再次重新发明轮子.
我正在寻找一个预定义的函数来从包含文件名的路径获取路径.因此,我没有获取文件名,而是想要另一部分.
当然,我可以像我自己一样做:
func PathOnly() -> String {
let n = NSURL(fileURLWithPath: self).lastPathComponent?.characters.count
return self.Left(self.characters.count - n!)
}
Run Code Online (Sandbox Code Playgroud)
当扩展String时,为什么重新发明轮子?:-) 任何的想法?
我尝试在运行时获取我的应用程序的路径。我从C找到了一些旧资料,并将其相应地转换为函数参数类型定义:
var path = [Int8] (count:1024, repeatedValue: 0)
var bufsize : UInt32 = 1024
if _NSGetExecutablePath(&path, &bufsize) == 0 {
println("executable path is \(path)")
}
Run Code Online (Sandbox Code Playgroud)
它可以运行,但是我需要一个Int8数组,而不是一个字符串。因此,我必须搜索字符链的末尾并将其转换回字符串。在SWIFT中使用此功能的正确方法是什么?
我正在使用XCode 7.0b5并创建了一个Swift应用程序.它在模拟器上运行良好,但在独立运行时(无线缆)在iPhone 4上崩溃.如何识别崩溃的位置?我读到了可能的内存问题.我正在阅读一个大文本文件,所以它需要近200 MB的RAM.我怎么检查呢?
我试着比较两天忽略时间.所以我用
calendar.compare(date1, to: date2, toGranularity: .day)
Run Code Online (Sandbox Code Playgroud)
但是,在将字符串日期传输到Date类型时,它将转换为UTC.所以它将从2016年1月1日0:05"移动"到2015年12月31日晚上11:05.每日比较时,这仅包括剩余的小时.在转换之前它是24小时.有什么想法不费力地处理这个问题?
另外:代码:
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy hh:mm"
var date1 : Date = dateFormatter.date(from: "01-01-2016 00:05")!
var date2 = dateFormatter.date(from: "01-01-2016 03:30")
if let dateFromString = dateFormatter.date(from: "01-01-2016 00:05") {
print(dateFromString)
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let stringFromDate = dateFormatter.string(from: dateFromString)
}
Calendar.current.compare(date1, to: date2!, toGranularity: .day) == .orderedSame
Run Code Online (Sandbox Code Playgroud) 在新的Swift 2样式中,join必须由joinWithSeparator替换.但是我得到了错误消息,发现了这个模糊的引用:
var distribCharactersInt = [Int](count:lastIndex + 1, repeatedValue:0)
...
let DistributionCharacterString = distribCharactersInt.joinWithSeparator(",")
Run Code Online (Sandbox Code Playgroud)
我忘记了什么?
使用时
let directoryEnumerator = FileManager().enumerator(at: ...
Run Code Online (Sandbox Code Playgroud)
在 Swift 3 中,我从文件夹中获取所有文件,例如
"file:///Volumes/MacOS/fasttemp/Fotos/"
Run Code Online (Sandbox Code Playgroud)
结果不包括主要路径(此处为“/Volumes/MacOS”)。所以我得到
"file:///fasttemp/Fotos/2005/"
Run Code Online (Sandbox Code Playgroud)
如何获取完整路径(直接从枚举器)或转换它们。我想使用 URL 函数,而不是通过假设进行操作的字符串函数。
我正在使用Swift 3.0并使用此代码搜索数组中的项目作为String类型的扩展:
extension String {
func equal(compareToArray : [String]) -> Bool {
for s in compareToArray {
if self == s {
return true
}
}
return false
}
}
Run Code Online (Sandbox Code Playgroud)
它运行正常,但我的问题是,我可以做得更好(更短/更简单或更快)?
好的,另一个类似的样本:
func contains(compareToArray : [String]) -> Bool {
for s in compareToArray {
if self.contains(s) {
return true
}
}
return false
}
Run Code Online (Sandbox Code Playgroud) swift ×9
arrays ×4
path ×2
compare ×1
crash ×1
date ×1
debugging ×1
dictionary ×1
directory ×1
enumerator ×1
file ×1
filter ×1
iphone ×1
join ×1
optimization ×1
parameters ×1
simulator ×1
string ×1
types ×1
utc ×1