- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Mac 应用程序,它保留自己的日志文件。它使用 NSString 的 writeToFile 方法将信息附加到文件中。它记录的内容之一是与其交互的 Web 服务的 URL。为了对 URL 进行编码,我这样做:
searchString = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)searchString, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8 );
然后应用程序将 searchString 附加到 URL 的其余部分并将其写入日志文件。现在的问题是,添加 URL 编码行后,似乎没有任何内容写入文件。然而,该程序按预期运行。删除上面的代码行会导致所有正确的信息都记录到文件中(删除该行不是一个选项,因为 searchString 必须进行 URL 编码)。
哦,我在将 NSString 写入文件时使用 NSUTF8StringEncoding。
感谢您的帮助。
编辑:我知道 NSString 中也有一个与 CFURLCreateStringByAddingPercentEscapes 类似的函数,但我读到它并不总是有效。如果我原来的问题无法得到解答,有人可以解释一下吗?谢谢! (编辑:使用 stringByAddingPercentEscapesUsingEncoding:
时会出现同样的问题)
编辑2:这是我用来将消息附加到日志文件的代码。
+(void)logText:(NSString *)theString{
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory,NSUserDomainMask,YES) objectAtIndex:0];
NSString *path = [docsDirectory stringByAppendingPathComponent:@"Folder/File.log"];
NSString *fileContents = [[[NSString alloc] initWithContentsOfFile:path] autorelease];
if([fileContents lengthOfBytesUsingEncoding:NSUTF8StringEncoding] >= 204800){
fileContents = @"";
}
NSString *timeStamp = [[NSDate date] description];
timeStamp = [timeStamp stringByAppendingString:@": "];
timeStamp = [timeStamp stringByAppendingString:theString];
fileContents = [fileContents stringByAppendingString:timeStamp];
fileContents = [fileContents stringByAppendingString:@"\n"];
[fileContents writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];
}
最佳答案
因为几乎一整天后没有人提供任何答案,我将在这里发布一个疯狂的猜测:您不会意外地将要输出的字符串(其中包含百分比字符)用作 < em>格式字符串你是吗?
也就是说,犯了这样的错误:
NSLog(@“在格式字符串中,您可以使用 %@ 作为对象的占位符,使用 %i 作为普通 C 整数。”)
而不是:
NSLog(@"%@", @"在格式字符串中,您可以使用 %@ 作为对象的占位符,使用 %i 作为普通 C 整数。");
但是如果这最终成为您问题的原因,我会感到惊讶,因为它通常会导致看起来随机的输出,而不是绝对没有输出。在某些情况下,Xcode 还会给出有关它的编译器警告(当我尝试 NSLog(myString)
时,我收到“警告:格式不是字符串文字且没有格式参数”)。
所以,如果这个答案没有帮助,请不要拒绝我。如果您可以向我们展示更多您的日志代码,那么回答您的问题会更容易。至于你提供的这一行,我没发现有什么问题。
编辑:哎呀,我有点错过你提到你正在使用 writeToFile:atomically:encoding:error:
将字符串写入文件,所以它是更不可能的是,您不小心将其视为某处的格式字符串。但我现在要保留这个答案。再说一次,你真的应该向我们展示更多你的代码......
编辑:关于您对 NSString 中具有类似百分比编码功能的方法的问题,该方法是 stringByAddingPercentEscapesUsingEncoding:
。当你说你听说它并不总是有效时,我不确定你在想什么样的问题。但有一件事是 CFURLCreateStringByAddingPercentEscapes 允许您指定通常不需要转义但您仍然希望转义的额外字符,而 NSString 的方法不允许您指定此字符.
关于objective-c - NSString writeToFile 带有 URL 编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494133/
我有一些代码将一些 PDFDocument 对象写入用户选择的目的地。这很好用。 也许其中一些文件(由用户选择)可能非常大(可能数百兆字节),现在我想知道是否有可能取消当前的 writeToFile:
我在我的代码中使用 NSDictionary 的 writeToFile 属性,我正在尝试将字典更新到文档目录,如下所示, NSDictionary *revisionDict = [NSDictio
func fetchFromInternet(){ let i = Int(DISPATCH_QUEUE_PRIORITY_HIGH.value) let que = dispatch
我有以下代码: NSString *errorStr = nil; NSData *plistData = [NSPropertyListSerialization dataFromPropertyL
我正在将一些数据写入我的文档目录,我想知道是否有一种方法可以判断我的 writeToFile 方法何时完成以及我正在创建的文件是否已完全创建。提前致谢 这是我正在调用的方法 我只是在寻找一种方法,无论
我不明白为什么它总是失败。它返回NO。我整个下午都在搜索这个问题,但没有任何解释为什么或如何解决。调用 [[NSFileManager defaultManager] isWritableFileAt
我有一个正在更改的 plist: NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.pl
每次我使用相机拍照,然后保存时,图像总是横向的。这意味着我的 Xib 中的 UIImageView 是错误的。它的肖像 - 这就是我想要和期望的。我可以通过将图像旋转 90 度来纠正此问题,但即使如此
我试图将一个数组(其中包含一些字典)保存到 plist 文件中,但失败了。我没有收到任何错误。我在代码中使用另一个数组执行了与上面完全相同的几行,并且有效。.我不明白为什么它不保存文件。 这是我保存文
只要方法调用发生在同一应用程序运行时,似乎 writeToFile 方法就会附加到当前存在的文件路径。这是真的? 是否有任何其他方法可以确保在应用程序 session 运行时附加到现有文件?我希望在新
我正在尝试用 swift 将内容写入文件 let jsonResult = try! NSJSONSerialization.JSONObjectWithData(response.data, o
在我的 iPhone 应用程序中,我正在从网络上下载一些图像。它是否阻塞 UI 线程并不重要,事实上它需要阻塞 UI 线程直到完全下载。完成后,我通知 UI 唤醒并显示它们。 我的(简化的)代码是这样
我正在将我的 UITextView 文本保存到文件 test.txt 中 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocument
// directoryPath is a URL from another VC @IBAction func saveButtonTapped(sender: AnyObject) {
我目前正在编写一个简单的 IOS 应用程序,它将任务保存到表中。我想扩展该应用程序并允许人们与其他人共享“列表”。在将其保存到 XML 或 URL 之前,我想使用 writeToFile:atomic
我已成功使用 Plist 在我的 iPhone 应用程序中读取和写入数据。 Plist 由数组中的字典组成。当我想附加字典时,我使用 writeToFile 方法。这很有效,但它会覆盖整个 Plist
每次按下保存按钮时,我都会尝试将图像保存到磁盘。这是我正在使用的代码: NSArray* documentDirectories = NSSearchPathForDirectoriesInDomai
我使用有效的字典运行以下代码,但仍然“未写入”: NSFileManager* fm = [[NSFileManager alloc] init]; __autoreleasing NSError
我将新收到的 PDF 文档的缩略图呈现到文档目录中。 我正在使用以下代码: CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundl
ios 声称文件已写入,但更改从未实际保存,就好像它们保留在缓冲区中一样。我需要冲洗什么的吗? - (void)viewDidLoad { [super viewDidLoad]; N
我是一名优秀的程序员,十分优秀!