Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Cocoa应用程序中固定NSString变量的存储位置?_Objective C_Macos_Cocoa - Fatal编程技术网

Objective c Cocoa应用程序中固定NSString变量的存储位置?

Objective c Cocoa应用程序中固定NSString变量的存储位置?,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我有不同的类,它们有NSString固定变量(比如@“/Users/user/media”或xml命令)。我认为把所有东西都放在课堂上是个糟糕的设计。 存储固定字符串的最佳位置是什么?可能是首选项文件 另外,我是可可新手,请详细描述它,我如何存储,并读取该值。谢谢。方法很多,但我喜欢在我的类实现文件中这样做: NSString *const ABConstantStringname = @"name"; 其中,AB是您正在使用的名称间距(如果您正在使用),而ConstantStringName

我有不同的类,它们有NSString固定变量(比如@“/Users/user/media”或xml命令)。我认为把所有东西都放在课堂上是个糟糕的设计。 存储固定字符串的最佳位置是什么?可能是首选项文件


另外,我是可可新手,请详细描述它,我如何存储,并读取该值。谢谢。

方法很多,但我喜欢在我的类实现文件中这样做:

NSString *const ABConstantStringname = @"name";
其中,
AB
是您正在使用的名称间距(如果您正在使用),而
ConstantStringName
是常数的一些有意义的名称


然后,您可以随时使用
ABNameIdentifier
变量。您。

取决于作用域-如果您只想在实现中une,您可以只放入.m,但是如果您想公开给类的使用者(在.m实现之外),您还需要将其外部化

在标题中:

#import <Cocoa/Cocoa.h>

extern NSString* const BNRTableBgColorKey;
extern NSString* const BNREmptyDocKey;

@interface PreferenceController : NSWindowController
{
    ...
- (id)init
{
    NSLog(@"init");

    NSString * const BNRTableBgColorKey = @"TableBackgroundColor";
    NSString * const BNREmptyDocKey = @"EmptyDocumentFlag";

您是指在整个应用程序/类中保持不变的字符串吗?是的。例如常量路径或XML请求。通常,您不应该硬编码路径。有几个API可用于获取系统提供的文件夹的位置(例如
NSSearchPathForDirectoriesInDomains()
NSHomeDirectory()
),您应该使用这些方法/函数的结果,并使用
stringByAppendingPathComponent:
方法
NSString
来构造路径字符串。谢谢!使用像@/Users/”这样的常量路径好吗?如果您想要一个路径字符串,那么上面的就可以了。硬编码路径到
/Users
不是一个好主意。请阅读。谢谢。这是非常有用的知道