oc计算文件代码行数,设计到foundation(nsstring和nsarray)

#import<Foundation/Foundation.h>intcodeLineCount(NSString*path){//1、加载文件内容NSString*co... #import <Foundation/Foundation.h>
int codeLineCount(NSString *path)
{// 1、加载文件内容
NSString * content = [NSString stringWithContentsOfFile:path usedEncoding:NSUTF8StringEncoding error:nil ];

// 2、将内容进行分割
NSString * str = [content componentsSeparatedByString:@"\n"];
// 3、算出\n个数
return str.count;
}
int main( )
{// 调用函数
int count = codeLineCount(@"/Users/admin/Desktop/快捷键.rtfd");
NSLog(@"count = %d", count);
return 0;
}

我自己觉得没什么问题,但是运行起来,调用函数path总是nil,难道是我main函数里的路径传的不对吗?
展开
 我来答
before24
2014-06-23 · TA获得超过467个赞
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:157万
展开全部

  首先,排除下文件路径的问题;

  其次,你对NSString的+stringWithContentsOfFile:usedEncoding:error:这个方法的用法理解有误,问题应该出在这儿。


  关于+stringWithContentsOfFile:usedEncoding:error:这个方法,第一个参数没问题,问题看第二个参数,看下文档,对这个方法的描述是“Returns a string created by reading data from the file at a given path and returns by reference the encoding used to interpret the file. This method attempts to determine the encoding of the file at path.”,也就是说这个方法会自己去判断这个文件是用什么方式进行编码的,而且根据文档来看第二个参数不是让你输入一个编码方式,而是要你输入一个编码方式变量的地址,然后方法会通过引用的方式返回它所采用的编码方式。其实第三个参数也挺重要的,一般用来判断出了什么错误。直接看代码吧,下面的代码是对你的codeLineCount的方法的改正,你可以参考下。


int codeLineCount(NSString *filePath)
{
  NSError * err = nil;
  NSStringEncoding fileEncoding;
  NSString *fileContent = [NSString stringWithContentsOfFile:filePath usedEncoding:&fileEncoding error:&err];
  NSArray *rows = [fileContent componentsSeparatedByString:@"\n"];
  if (err) {
        NSLog(@"codeLineCount error: %@", err.localizedDescription);
  }
  return rows.count;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式