小编Mat*_*att的帖子

在Swift中逐行读取文件/ URL

我正在尝试读取一个给定的文件NSURL并将其加载到一个数组中,其中的项目由换行符分隔\n.

这是我到目前为止的方式:

var possList: NSString? = NSString.stringWithContentsOfURL(filePath.URL) as? NSString
if var list = possList {
    list = list.componentsSeparatedByString("\n") as NSString[]
    return list
}
else {
    //return empty list
}
Run Code Online (Sandbox Code Playgroud)

出于几个原因,我对此并不满意.一,我正在处理从几千字节到几百MB的文件.你可以想象,使用这么大的字符串是缓慢而笨拙的.其次,这会在执行时冻结UI - 再次,不好.

我已经考虑在一个单独的线程中运行此代码,但我一直遇到麻烦,此外,它仍然无法解决处理大字符串的问题.

我想做的是下面的伪代码:

var aStreamReader = new StreamReader(from_file_or_url)
while aStreamReader.hasNextLine == true {
    currentline = aStreamReader.nextLine()
    list.addItem(currentline)
}
Run Code Online (Sandbox Code Playgroud)

我如何在Swift中实现这一目标?

关于我正在阅读的文件的一些注意事项:所有文件都由短或(\n或255个字符)字符串组成,由或者分隔\r\n.文件的长度范围从~100行到超过5000万行.它们可能包含欧洲字符和/或带重音的字符.

macos file input stream swift

72
推荐指数
3
解决办法
4万
查看次数

尽管表示成功,但UIDocument未保存到文件

我正在尝试使用iCloud Drive打开,修改和保存文件UIDocument.当我打电话save(to:for:completionHandler:)与文件的位置和使用.forOverwritingUIDocumentSaveOperation,它的状态完成success = true.但是,iCloud文件(如桌面和iOS文件浏览器中所示)不会更新,重新打开文件时,不会显示更改.我已验证contents(forType:)在保存时返回正确(修改)的文件内容.

(注意:我已经看过这个问题了,但它没有太大帮助)

以下是相关的代码部分:

MainViewController.swift:

var saveFile: SBDocument?

@IBAction func bbiOpen_pressed(_ sender: UIBarButtonItem) {

    if saveFile == nil {
        let importMenu = UIDocumentMenuViewController(documentTypes: self.UTIs, in: .import)
        importMenu.delegate = self
        importMenu.popoverPresentationController?.barButtonItem = bbiOpen
        self.present(importMenu, animated: true, completion: nil)
    } else {
        willClose()
    }

}

func willClose(_ action: UIAlertAction?) {
    if saveFile!.hasUnsavedChanges {
        dlgYesNoCancel(self, title: "Save Changes?", message: "Would you like to save the changes to …
Run Code Online (Sandbox Code Playgroud)

save ios icloud uidocument swift

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

Git和iCloud Drive可以一起有效地使用吗?

此问题的风格相同,在将两种服务结合使用时是否会出现任何可能的复杂情况?

cloud git version-control github icloud

12
推荐指数
3
解决办法
6171
查看次数

将NSSound转换为AVAudioPlayer

我有一些NSSound我想转换为AVAudioPlayer实例的对象.我有NSURLNSSound对象关联的文件路径,但原始文件可能不存在.这是我到目前为止:

class SoundObj: NSObject {
    var path: NSURL?
    var sound: NSSound?
    var player: AVAudioPlayer
}

let aSound = SoundObj()
aSound.path = NSURL(fileURLWithPath: "file:///path/to/sound.m4a")
aSound.sound = NSSound(contentsOfURL: aSound.path)!

do {
    try aSound.player = AVAudioPlayer(contentsOfURL: aSound.path)
} catch {
    // perhaps use AVAudioPlayer(data: ...)?
}
Run Code Online (Sandbox Code Playgroud)

如何将NSSound对象转换为AVAudioPlayer实例?

audio macos nssound avaudioplayer swift

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

如何查找字符串vb.net中子字符串的出现次数

我有一个字符串(例如:) "Hello there. My name is John. I work very hard. Hello there!",我试图找到字符串的出现次数"hello there".到目前为止,这是我的代码:

Dim input as String = "Hello there. My name is John. I work very hard. Hello there!"
Dim phrase as String = "hello there"
Dim Occurrences As Integer = 0

If input.toLower.Contains(phrase) = True Then
    Occurrences = input.Split(phrase).Length      
    'REM: Do stuff
End If
Run Code Online (Sandbox Code Playgroud)

不幸的是,这行代码似乎是在每次看到第一个字母时分割字符串phrase,在本例中h.因此Occurrences = 2,我实际上得到的数字要大得多,而不是我希望得到的结果.我知道计算一个字符串中的分裂数是一种可怕的方式,即使我得到了正确的答案,所以有人可以帮助我并提供一些帮助吗?

vb.net string split substring

10
推荐指数
4
解决办法
6万
查看次数

使用Swift为OSX禁用睡眠/屏幕保护程序

我正在寻找一种方法来使用Swift通过我的应用程序禁用睡眠模式和屏幕保护程序.我知道这个问题已经之前,但没有一个答案是当前的(至少对于斯威夫特,我不知道的Objective-C).

我原本以为要使用NSWorkspace.sharedWorkspace().extendPowerOffBy(requested: Int),但根据Apple的文档,它目前尚未实现.

有什么建议?

macos cocoa swift

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

NSKeyedUnarchiver不使用Swift 3

我有以下代码用于在Mac应用程序中取消归档文件:

func tryOpen(_ filePath: String) throws -> NSArray {
    if #available(OSX 10.11, *) {
        do {
            if let data = try? Data(contentsOf: URL(fileURLWithPath: filePath)) {
                let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as! NSArray
                return array
            } else {
                throw NSError(domain: NSExceptionName.invalidUnarchiveOperationException.rawValue, code: 0, userInfo: nil)
            }
        } catch let ex {
            throw ex
        }
    } else {
        // Fallback on earlier versions
        let dat = try? Data(contentsOf: URL(fileURLWithPath: filePath))
        let unarchiver = NSKeyedUnarchiver(forReadingWith: dat!)
        if let array = unarchiver.decodeObject(forKey: "root") as? …
Run Code Online (Sandbox Code Playgroud)

xcode nskeyedunarchiver swift swift3

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

在VB.net中将csv数据转换为DataTable

我试图将存储为csv文件的大量整数导入到VB.Net DataTable中BeamMap..csv文件仅由整数组成,其分隔符为,数字(即.1,3,-2,44,1)的引号,以及换行和回车符的行尾字符.我想要做的就是将每个整数放入一个具有适当行和列的DataTable单元格中(每行有相同数量的列),并且稍后可以在我的代码中引用它.我真的不想要任何超过代码绝对必要的东西(没有标题,标题,标题等),我需要它相当有效(csv数组约为~1000 x~1000).

谢谢!

vb.net csv import datatable multidimensional-array

6
推荐指数
2
解决办法
6万
查看次数

验证NSTextField中的字符串是否为有效的IP地址或域名

我有一个NSTextField地方,我要求用户输入一个IPv4格式的字符串,或域名,如www.example.com.目前,我的代码是:

@IBAction func verifyTarget(sender: NSTextFieldCell) {
    var txtTarget: NSTextFieldCell = sender

    var strRawTarget: String? = txtTarget.stringValue
    println("Input: " + strRawTarget!)
    var URLTarget: NSURL?

    URLTarget = NSURL.URLWithString(strRawTarget)
    if URLTarget {
        println("URL \(URLTarget) is valid!")
    }
    else {
        println("URL \(strRawTarget) is not valid!")
    }
}
Run Code Online (Sandbox Code Playgroud)

一些示例输出:

Input: 
URL  is valid!
Input: adsfasdf
URL adsfasdf is valid!
Input: afe12389hfs. . afopadsf
URL afe12389hfs. . afopadsf is not valid!
Input: 192.292.111.3
URL 192.292.111.3 is valid!
Input: 0.a.0.a
URL 0.a.0.a is …
Run Code Online (Sandbox Code Playgroud)

string validation macos parsing swift

6
推荐指数
4
解决办法
5499
查看次数

在 Xcode 中设置文档文件图标不起作用?

我试图将我的应用程序使用的文件类型(扩展名.sbd)与我的应用程序相关联,并让保存的文件显示自定义的文档图标。我在 Xcode 中设置了文档类型部分,如下所示: Xcode 文档类型设置

这是我的Info.plist文档类型部分:

信息列表

我在这里查看了其他类似的问题,但他们要么提到了CFBundleTypeIconFile,这似乎已被弃用,要么他们未能解决该问题。有什么我没做或者做错的事情吗?

macos xcode icons document

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