相关疑难解决方法(0)

获取String的长度

你怎么得到一个长度String?例如,我有一个变量定义如下:

var test1: String = "Scott"
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法在字符串上找到长度方法.

string swift

765
推荐指数
18
解决办法
45万
查看次数

从字符串中删除最后一个字 迅捷的语言

如何使用Swift从String变量中删除最后一个字符?在文档中找不到它.

这是完整的例子:

var expression = "45+22"
expression = expression.substringToIndex(countElements(expression) - 1)
Run Code Online (Sandbox Code Playgroud)

string character swift

221
推荐指数
8
解决办法
14万
查看次数

Objective-C:逐行读取文件

在Objective-C中处理大型文本文件的适当方法是什么?假设我需要分别读取每一行,并希望将每一行视为NSString.这样做最有效的方法是什么?

一种解决方案是使用NSString方法:

+ (id)stringWithContentsOfFile:(NSString *)path 
      encoding:(NSStringEncoding)enc 
      error:(NSError **)error 
Run Code Online (Sandbox Code Playgroud)

然后使用换行符分隔符拆分行,然后遍历数组中的元素.但是,这似乎效率很低.有没有简单的方法将文件视为一个流,枚举每一行,而不是一次只读取它?有点像Java的java.io.BufferedReader.

file-io objective-c enumerate nsstring nsstream

138
推荐指数
8
解决办法
15万
查看次数

如何逐行读取NSFileHandle的数据?

我有一个文本文件,其中包含给定的数据

例如

PUFGUjVRallYZDNaazFtVjVObU1zWm5ZcUJUYU5ORk4zbGthNHNDVUdSMlFVQmpSVEoxUUNSallYaFhkanBITXBGR1NTQnpZRTltZE1OalVzSkdXQ0Z6WXR0V2RpTmpTdXgwTWs5V1lZSkZiWjFXT29OV2JSVlhaSTUwYUpwR040UUZXTzVHVXFoWFVRcFdWNHdVTUJ0Q1VHSmxXVlJVTlJCMVE1VTFWV
PUFGUjVRallYZDNaazFtVjVObU1zWm5ZcUJUYU5ORk4zbGthNHNDVUdSMlFVQmpSVEoxUUNSallYaFhkanBITXBGR1NTQnpZRTltZE1OalVzSkdXQ0Z6WXR0V2RpTmpTdXgwTWs5V1lZSkZiWjFXT29OV2JSVlhaSTUwYUpwR040UUZXTzVHVXFoWFVRcFdWNHdVTUJ0Q1VHSmxXVlJVTlJCMVE1VTFWV
Run Code Online (Sandbox Code Playgroud)

现在我想逐行读取数据.这意味着首先我要阅读

PUFGUjVRallYZDNaazFtVjVObU1zWm5ZcUJUYU5ORk4zbGthNHNDVUdSMlFVQmpSVEoxUUNSallYaFhkanBITXBGR1NTQnpZRTltZE1OalVzSkdXQ0Z6WXR0V2RpTmpTdXgwTWs5V1lZSkZiWjFXT29OV2JSVlhaSTUwYUpwR040UUZXTzVHVXFoWFVRcFdWNHdVTUJ0Q1VHSmxXVlJVTlJCMVE1VTFWV
Run Code Online (Sandbox Code Playgroud)

然后下一个剩下的.谁有任何想法?

cocoa objective-c nsfilehandle

49
推荐指数
5
解决办法
4万
查看次数

在Swift中逐行读取文本文件?

刚开始学习Swift,我已经从文本文件中读取了代码,应用程序显示了整个文本文件的内容.如何逐行显示并多次调用该行?

TextFile.txt包含以下内容.

  1. 香蕉
  2. 苹果
  3. 草莓
  4. 蓝莓
  5. 黑茶

以下是目前的......

  if let path = NSBundle.mainBundle().pathForResource("TextFile", ofType: "txt"){
        var data = String(contentsOfFile:path, encoding: NSUTF8StringEncoding, error: nil)
            if let content = (data){
                TextView.text = content
    }
Run Code Online (Sandbox Code Playgroud)

如果还有其他方式,请告诉我.非常感激

arrays text nsstring ios swift

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

Apple的新编程语言Swift如何处理块和异步请求?

Cf Apple在Swift上的网页:https://developer.apple.com/swift/

Swift中的块是否像objective-c一样?它们是如何创建和调用的?

如何在Swift中执行异步请求?

在swift中创建与块相关的内存泄漏是否容易?如果是的话,你会如何避免它们?

swift

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

通过蓝牙将音频从麦克风传输到另一部iPhone

我正在尝试接收传入的麦克风音频并将其传输到另一部iPhone.基本上是电话,但通过蓝牙.我有音频通过AVAudioRecorder:

func startRecording() {
    audioRecorder = nil
    let audioSession:AVAudioSession = AVAudioSession.sharedInstance()
    audioSession.setCategory(AVAudioSessionCategoryRecord, error: nil)

    var recordSettings:NSMutableDictionary = NSMutableDictionary(capacity: 10)
    recordSettings.setObject(NSNumber(integerLiteral: kAudioFormatLinearPCM), forKey: AVFormatIDKey)
    recordSettings.setObject(NSNumber(float: 44100.0), forKey: AVSampleRateKey)
    recordSettings.setObject(NSNumber(int: 2), forKey: AVNumberOfChannelsKey)
    recordSettings.setObject(NSNumber(int: 16), forKey: AVLinearPCMBitDepthKey)
    recordSettings.setObject(NSNumber(bool: false), forKey: AVLinearPCMIsBigEndianKey)
    recordSettings.setObject(NSNumber(bool: false), forKey: AVLinearPCMIsFloatKey)

    soundPath = documentsDirectory.stringByAppendingPathComponent("record.caf")
    refURL = NSURL(fileURLWithPath: soundPath as String)
    var error:NSError?

    audioRecorder = AVAudioRecorder(URL: refURL, settings: recordSettings as [NSObject : AnyObject], error: &error)

    if audioRecorder.prepareToRecord() == true {
        audioRecorder.meteringEnabled = true
        audioRecorder.record()
    } else { …
Run Code Online (Sandbox Code Playgroud)

iphone audio bluetooth ios swift

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

优化字符串解析

我需要以"txf"格式解析数据文件.这些文件可能包含1000多个条目.由于格式定义如JSON,我想创建一个像JSON这样的通用解析器,它可以序列化和反序列化txf文件.

与JSON相反,标记没有办法识别对象或数组.如果出现具有相同标记的条目,我们需要将其视为数组.

  1. # 标记对象的开头.
  2. $ 标记对象的成员
  3. / 标记对象的结尾

以下是示例"txf"文件

#Employees
$LastUpdated=2015-02-01 14:01:00
#Employee
$Id=1
$Name=Employee 01
#Departments
$LastUpdated=2015-02-01 14:01:00
#Department
$Id=1
$Name=Department Name
/Department
/Departments
/Employee
#Employee
/Employee
/Employees
Run Code Online (Sandbox Code Playgroud)

我能够使用NSScanner 创建一个通用的TXF Parser.但随着更多的条目,性能需要更多的调整.

我写了基础对象plist,并将其性能再次与我编写的解析器进行了比较.我的解析器比plist解析器慢大约10倍.

虽然plist文件大小是5倍以上txf并且有更多标记字符,但我觉得有很多优化空间.

我们非常感谢在这方面提供任何帮助.

编辑:包括解析代码

static NSString *const kArray    = @"TXFArray";
static NSString *const kBodyText = @"TXFText";

@interface TXFParser ()

/*Temporary variable to hold values of an object*/
@property (nonatomic, strong) NSMutableDictionary *dict;

/*An array to hold the hierarchial …
Run Code Online (Sandbox Code Playgroud)

markup parsing objective-c ios nsscanner

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

从Swift中的大文本文件中读取行直到新行为空:Swift方式

我有以下文本文件结构(文本文件很大,大约100,000行):

A|a1|111|111|111
B|111|111|111|111

A|a2|222|222|222
B|222|222|222|222
B|222|222|222|222

A|a3|333|333|333
B|333|333|333|333

...
Run Code Online (Sandbox Code Playgroud)

我需要提取一段与给定键相关的文本.例如,如果我的密钥是A | a2,我需要将以下内容保存为字符串:

A|a2|222|222|222
B|222|222|222|222
B|222|222|222|222
Run Code Online (Sandbox Code Playgroud)

对于我的C++和Objective C项目,我使用了C++ getline函数,如下所示:

std::ifstream ifs(dataPathStr.c_str());

NSString* searchKey = @"A|a2";
std::string search_string ([searchKey cStringUsingEncoding:NSUTF8StringEncoding]);

// read and discard lines from the stream till we get to a line starting with the search_string
std::string line;

while( getline( ifs, line ) && line.find(search_string) != 0 );

// check if we have found such a line, if not report an error
if( line.find(search_string) != 0 )
{
 data = …
Run Code Online (Sandbox Code Playgroud)

readline getline swift

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

如何使用游乐场在Swift中读取和写入数据到文本文件?

我通读了这些SO链接以获得答案

1.在Swift中逐行读取文件/ URL

2.从文本文件中读取和写入数据

链接2为我提供了解决方案,但问题是目录.默认情况下,它是当前项目的Document目录.

因此,如果我想从"/Users/Prem/Desktop/File.txt"中读取文件,我应该对该代码进行哪些修改?

如何使用自定义目录在文本文件中读写数据?

let dirs : [String]? = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]

if ((dirs) != nil) {
    var dir = dirs![0]; //documents directory
    //println(dir)

    //dir = "/Users/Prem/Desktop"  ----> If i give this path, its not creating the file

    //Current Value in dir
    //dir ----> "/Users/Prem/Library/Containers/com.apple.dt.playground.stub.OSX.FileIO-2159807F-CC21-4545-AC34-AD9F9898796B/Data/Documents"

    let path = dir.stringByAppendingPathComponent("File.txt");
    println(path)
    let text = "Rondom Text"

    //writing
    text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);

    //reading
    let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, …
Run Code Online (Sandbox Code Playgroud)

file-io swift swift-playground

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

一些字符在NSString中发生了变化

我正在从url内容中检索字符串,这样:

NSString *urlStr = [NSString stringWithFormat:@"http://www.example.com/string_to_retrieve"];
NSURL *url = [NSURL URLWithString:urlStr];
NSString *resp = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
Run Code Online (Sandbox Code Playgroud)

并将其写入文件,这样:

NSString *outFile = @"/path/to/myfile";
[resp writeToFile:outFile atomically:YES encoding:NSUTF8StringEncoding error:nil];
Run Code Online (Sandbox Code Playgroud)

我的字符串包含几个特殊的字符,如"ö",应该用"F6"十六进制值表示,但是当我尝试用十六进制编辑器打开我的字符串写入的文件时,我看到"ö"(F6)被转换另外两个字符:""(C3 B6)

我尝试了两种其他的字符串编码

NSString *resp = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
Run Code Online (Sandbox Code Playgroud)

[resp writeToFile:outFile atomically:YES encoding:NSUTF8StringEncoding error:nil];
Run Code Online (Sandbox Code Playgroud)

但总是结果不好......

NSASCIIStringEncoding似乎是我可以从我的网址获取该字符串的唯一方法:如果我使用其他编码,就像NSUTF8StringEncoding我得到的那样nil

NSUTF8StringEncoding似乎是我可以写入我的文件的唯一方法:如果我使用其他编码,就像NSASCIIStringEncoding我得到的是一个0字节文件

那么我怎样才能正确检索并将该字符串写入我的文件?

iphone objective-c character-encoding special-characters nsstring

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

如何将文件读入 Int 数组

在我的应用程序文档文件夹中,我有一个文件,我试图将每个字节读入一个数组,UInt8其中每个元素代表一个字节。我该怎么做呢?该文件恰好称为 Q1.dat。

这是我失败的尝试:

func readArray() -> [Int]? {
    if let arrayPath: String = createArrayPath() {
        if let arrayFromFile: [Int] = NSArray(contentsOfFile: arrayPath) as? [Int] {
            return arrayFromFile
        }
    }
    return nil
}

func createArrayPath () -> String? {
    if let docsPath: String = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last {
        return ((docsPath as NSString).stringByAppendingPathComponent("Q1") as NSString).stringByAppendingPathExtension("dat")
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

arrays bits swift

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