Objective c #在每个.m文件中将URL定义为字符串?
我仍在尝试学习Objective-C,并拥有一个从web服务器下载文档的应用程序。 这些文档在十个预定义的文件夹中,每个类别我都有单独的类 我当前访问文件的方式是,在每个.m文件的顶部,我将父文件夹的URL定义为字符串,子文件夹定义为单独的字符串:Objective c #在每个.m文件中将URL定义为字符串?,objective-c,string,url,concatenation,c-preprocessor,Objective C,String,Url,Concatenation,C Preprocessor,我仍在尝试学习Objective-C,并拥有一个从web服务器下载文档的应用程序。 这些文档在十个预定义的文件夹中,每个类别我都有单独的类 我当前访问文件的方式是,在每个.m文件的顶部,我将父文件夹的URL定义为字符串,子文件夹定义为单独的字符串: #define WEBHOST @"http://webserverURL/mainfolder" #define FOLDER @"subfolderName" 然后将它们连接起来: NSString *pathString = [NSStrin
#define WEBHOST @"http://webserverURL/mainfolder"
#define FOLDER @"subfolderName"
然后将它们连接起来:
NSString *pathString = [NSString stringWithFormat:@"%@%@", WEBHOST, FOLDER];
NSURL *documentsDirectoryURL = [NSURL URLWithString:pathString];
NSData *documentsHTMLData = [NSData dataWithContentsOfURL:documentsDirectoryURL];
然后我用hpple
解析HTML,并根据需要进行处理。我不确定这是否是一种特别有效的技术,但它似乎满足了我的需要。
然而,这似乎有点混乱,我想我缺少了一些更简单或更有效的方法来实现这一点
我的问题:这是一种合理的做法,还是我犯了一种典型的新手犯罪,把事情弄得比需要的更复杂、更混乱?好吧,你可以做以下一件事:
#define WEBHOST @"http://webserverURL/mainfolder"
#define FOLDER WEBHOST @"/subfolderName"
它应该将webhost名称连接到文件夹名称。可能会节省一行代码。您的方法很好,但我建议将所有定义放在一个头文件中,并包括该头文件。您必须重新定义可能导致错误的
WEBHOST
:
urldefs.h:
#define WEBHOST @"http://webserverURL/mainfolder"
#define SUBFOLDER1 @"subfolder1Name"
...
#define SUBFOLDER2 @"subfolder2Name"
#define SUBFOLDERn @"subfoldernName"
如果每个.m文件中的WEBHOST相同,请将其定义放在.h中,然后导入。这样,如果它发生变化,你就有一行要修改,而不是十行。啊,当然。我本应该知道但却忽略了。谢谢。我还至少建议:将Webhost定义放入pch文件中,这样就不需要在每个.m文件中重新定义它。是否使用以下命令连接Objective-C字符串文本:
@“第一位”“第二位”
?不确定,但我要尝试一下。。。。好的,它会生成一个X代码警告:“格式字符串不是字符串文字(可能不安全)”。。。但是是的,它确实有效。再次感谢,我在这里学到了一些很好的小技巧。@Robert:你确定用Objective-C字符串表示法(以@
开头)代替C表示法吗?谢谢。这是否意味着创建一个名为urldefs的新NSObject文件,将定义放入urldefs.h文件中,根据需要导入并删除urldefs.m文件?@Robert No,您可以自己创建一个新的头文件。