gpt4 book ai didi

objective-c - 在 Cocoa/OSX 中读取用户默认值的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-03 16:54:04 26 4
gpt4 key购买 nike

我正在将一个简单的unix应用程序移植到OSX,现在在NSWindow中使用NSView子类。有三个颜色常量(此 View @interface 的成员),我不喜欢对其进行硬编码,而是可以将其定义为用户默认值(并在启动时加载)。这些都是:a、bc 均为 [NSColor colorWithDeviceRed: green: blue: alpha] 类型。我正在尝试了解如何从用户默认文件中读取这些值,该文件可以手动写入或通过默认值写入em> 系统命令。还要尽量避免深入研究首选项 Pane Controller 、颜色井等。在 X11 中,这非常简单。我试图找出在 Cocoa 中实现它的最简单方法。它不适用于“AppStore”类型的应用程序。是否有此类代码或类似代码的工作示例 - 在网络上找不到?提前致谢。

最佳答案

NSUserDefaults,是的...

这是我使用的代码,我将颜色存储为逗号分隔的 RGB 值。

- (id)getUserPref:(NSString *)aSelector
{
id returnVal = nil;
NSString *val = [[NSUserDefaults standardUserDefaults] objectForKey:aSelector];
NSArray *vals = [val componentsSeparatedByString:@","];
float rgba[4];
// brute force validation of string... funky but safe
if ( [vals count] <= 4 )
{
for ( int idx = 0; idx < [vals count]; idx++ )
{
val = [vals objectAtIndex:idx];
val = [val stringByTrimmingCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"01234567890."] invertedSet]];

if ( [val length] )
{
rgba[idx] = [val floatValue];
if ( rgba[idx] > 255 || rgba[idx] < 0 )
break;

if ( [vals count] == 1 )
{
returnVal = [[NSColor colorWithContrastWhite:rgba[0]/255.0 alpha:1.0] retain];
return returnVal;
}
else if ( idx == 2 && [vals count] == 3 )
{
returnVal = [[NSColor colorWithContrastRed:rgba[0]/255.0 green:rgba[1]/255.0 blue:rgba[2]/255.0 alpha:1.0] retain];
return returnVal;
}
else if ( idx == 3 && [vals count] == 4 )
{
returnVal = [[NSColor colorWithContrastRed:rgba[0]/255.0 green:rgba[1]/255.0 blue:rgba[2]/255.0 alpha:rgba[3]/255.0] retain];
return returnVal;
}
}
}
}

DLogErr(@"bad BGThemeMbox user pref %@", aSelector);

return nil; // better have a fallback color
}

关于objective-c - 在 Cocoa/OSX 中读取用户默认值的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com