目前我正在尝试将 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/