你怎么得到一个长度String?例如,我有一个变量定义如下:
var test1: String = "Scott"
但是,我似乎无法在字符串上找到长度方法.
如何使用Swift从String变量中删除最后一个字符?在文档中找不到它.
这是完整的例子:
var expression = "45+22"
expression = expression.substringToIndex(countElements(expression) - 1)
在Objective-C中处理大型文本文件的适当方法是什么?假设我需要分别读取每一行,并希望将每一行视为NSString.这样做最有效的方法是什么?
一种解决方案是使用NSString方法:
+ (id)stringWithContentsOfFile:(NSString *)path 
      encoding:(NSStringEncoding)enc 
      error:(NSError **)error 
然后使用换行符分隔符拆分行,然后遍历数组中的元素.但是,这似乎效率很低.有没有简单的方法将文件视为一个流,枚举每一行,而不是一次只读取它?有点像Java的java.io.BufferedReader.
我有一个文本文件,其中包含给定的数据
例如
PUFGUjVRallYZDNaazFtVjVObU1zWm5ZcUJUYU5ORk4zbGthNHNDVUdSMlFVQmpSVEoxUUNSallYaFhkanBITXBGR1NTQnpZRTltZE1OalVzSkdXQ0Z6WXR0V2RpTmpTdXgwTWs5V1lZSkZiWjFXT29OV2JSVlhaSTUwYUpwR040UUZXTzVHVXFoWFVRcFdWNHdVTUJ0Q1VHSmxXVlJVTlJCMVE1VTFWV
PUFGUjVRallYZDNaazFtVjVObU1zWm5ZcUJUYU5ORk4zbGthNHNDVUdSMlFVQmpSVEoxUUNSallYaFhkanBITXBGR1NTQnpZRTltZE1OalVzSkdXQ0Z6WXR0V2RpTmpTdXgwTWs5V1lZSkZiWjFXT29OV2JSVlhaSTUwYUpwR040UUZXTzVHVXFoWFVRcFdWNHdVTUJ0Q1VHSmxXVlJVTlJCMVE1VTFWV
现在我想逐行读取数据.这意味着首先我要阅读
PUFGUjVRallYZDNaazFtVjVObU1zWm5ZcUJUYU5ORk4zbGthNHNDVUdSMlFVQmpSVEoxUUNSallYaFhkanBITXBGR1NTQnpZRTltZE1OalVzSkdXQ0Z6WXR0V2RpTmpTdXgwTWs5V1lZSkZiWjFXT29OV2JSVlhaSTUwYUpwR040UUZXTzVHVXFoWFVRcFdWNHdVTUJ0Q1VHSmxXVlJVTlJCMVE1VTFWV
然后下一个剩下的.谁有任何想法?
刚开始学习Swift,我已经从文本文件中读取了代码,应用程序显示了整个文本文件的内容.如何逐行显示并多次调用该行?
TextFile.txt包含以下内容.
以下是目前的......
  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
    }
如果还有其他方式,请告诉我.非常感激
Cf Apple在Swift上的网页:https://developer.apple.com/swift/
Swift中的块是否像objective-c一样?它们是如何创建和调用的?
如何在Swift中执行异步请求?
在swift中创建与块相关的内存泄漏是否容易?如果是的话,你会如何避免它们?
我正在尝试接收传入的麦克风音频并将其传输到另一部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 { …我需要以"txf"格式解析数据文件.这些文件可能包含1000多个条目.由于格式定义如JSON,我想创建一个像JSON这样的通用解析器,它可以序列化和反序列化txf文件.
与JSON相反,标记没有办法识别对象或数组.如果出现具有相同标记的条目,我们需要将其视为数组.
# 标记对象的开头. $ 标记对象的成员/ 标记对象的结尾以下是示例"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
我能够使用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 …我有以下文本文件结构(文本文件很大,大约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
...
我需要提取一段与给定键相关的文本.例如,如果我的密钥是A | a2,我需要将以下内容保存为字符串:
A|a2|222|222|222
B|222|222|222|222
B|222|222|222|222
对于我的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 = …我通读了这些SO链接以获得答案
链接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, …我正在从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];
并将其写入文件,这样:
NSString *outFile = @"/path/to/myfile";
[resp writeToFile:outFile atomically:YES encoding:NSUTF8StringEncoding error:nil];
我的字符串包含几个特殊的字符,如"ö",应该用"F6"十六进制值表示,但是当我尝试用十六进制编辑器打开我的字符串写入的文件时,我看到"ö"(F6)被转换另外两个字符:""(C3 B6)
我尝试了两种其他的字符串编码
NSString *resp = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
和
[resp writeToFile:outFile atomically:YES encoding:NSUTF8StringEncoding error:nil];
但总是结果不好......
NSASCIIStringEncoding似乎是我可以从我的网址获取该字符串的唯一方法:如果我使用其他编码,就像NSUTF8StringEncoding我得到的那样nil
NSUTF8StringEncoding似乎是我可以写入我的文件的唯一方法:如果我使用其他编码,就像NSASCIIStringEncoding我得到的是一个0字节文件
那么我怎样才能正确检索并将该字符串写入我的文件?
iphone objective-c character-encoding special-characters nsstring
在我的应用程序文档文件夹中,我有一个文件,我试图将每个字节读入一个数组,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
}