objective-c - 将 NSRect 保存到 NSUserDefaults

标签 objective-c cocoa nsuserdefaults

目前我正在尝试将 NSRect 保存到我的用户默认值。现在我正在使用 NSValue 将其包装为一个对象,然后使用以下代码将其作为对象保存到用户默认值中

[userDefaults setObject:[NSValue valueWithRect:rect forKey:@"Key"]];

但是,当我运行它时,我收到一条错误消息,显示 [NSUserDefaults setObject:forKey:]: Attempt to insert non-property value 'NSRect: {{0, 0}, {50, 50}}' of class 'NSConcreteValue'。

有谁知道我该如何解决这个问题?谢谢。

最佳答案

这是一个更简单的解决方案,使用 NSString:

// store:
[[NSUserDefaults standardUserDefaults] 
   setValue:NSStringFromCGRect(frame) forKey:@"frame"];

// retrieve:
CGRect frame = CGRectFromString(
   [[NSUserDefaults standardUserDefaults] stringForKey:@"frame"]);

swift 4

// store
UserDefaults.standard.set(NSStringFromCGRect(rect), forKey: "frame")

// retrieve
if let s = UserDefaults.standard.string(forKey: "frame") {
   let frame = CGRectFromString(s)
}

关于objective-c - 将 NSRect 保存到 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726924/

相关文章:

xcode - 从 AppDelegate (Swift) 连接到 ViewController

ios - 如何在 NSUserDefaults 中设置数组的数组?

ios - NSUserDefaults setObject :forKey: very time expensive

iOS:将手势传递给下面的 View

objective-c - LSSharedFileListItemResolve 抛出 : "URLs with the type "nwnode :"are not supported"

objective-c - Objective-C 是否编译为 native 代码或字节码?

ios - NSUserDefaults 不保存

ios - 从 ViewController 类更改自定义 View 类属性

ios - ARC委托(delegate)内存管理

ios - objective-c 变量赋值不起作用