- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚向我的同事展示了我的代码,他提醒我使用现代的 objective c 语法。我觉得自己像个白痴,因为我不知道他的意思。我如何转换:
NSUserDefaults *rankDate = [NSUserDefaults standardUserDefaults];
[rankDate setObject:self.date forKey:@"rankDate"];
[rankDate setObject:[NSNumber numberWithInteger:self.date.people] forKey:@"people"];
[rankDate synchronize];
进入“现代 Objective-C 语法”?
我多年来一直这样做,但从未听说过这种语法。我应该担心吗?
最佳答案
既然它出现在评论中,我想我会继续将它提升为一个答案,这样它就不会丢失。这里更好的代码是:
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setObject:self.date forKey:@"rankDate"];
[ud setInteger:self.date.people forKey:@"people"];
我做了一些改变。首先,rankDate
作为standardUserDefaults
的名称毫无意义,而且非常具有误导性。其次,它使用 setInteger:forKey:
而不是乱用 NSNumber
包装器。没有那个必要。最后,它摆脱了 synchronize
。这很少能达到您真正的意思,尤其是在 iOS 上(it just waits)。
也就是说,整个对象模型非常困惑。似乎“date”不是日期,“people”不是人,而且你将相同的数据保存了两次。但这是一个单独的问题。最主要的是这里没有正确应用“现代 Objective-C”。您不应该使用 NSNumber
(即 @(...)
),并且 NSUserDefaults
上没有下标(即 ud [@"..."]
).
(setInteger:forKey:
和 NSUserDefaults
上的所有其他特定 set
方法的存在我相信解释了为什么它没有下标。这将是特殊情况的对象,这会使代码不一致并鼓励 NSNumber
在不需要时换行。)
关于ios - NSUserDefault setObject 的现代 objective-c 语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34651699/
setObject:forKey 和 setObject:forKeyedSubscript 方法有什么区别吗? 我正在使用 Objective-C NSMutableArray。对我来说,两者的功能
新手问题。如果我将一个对象设置到 NSUserDefault 中,我是否还需要同步以确保该对象永久返回到 NSUserDefault 数据库中?我想我想问的是,“setobject”是将对象永久性地放
我在这里错过明显的东西吗? 我有以下使用org.xerial:sqlite-jdbc:3.21.0对SQLite本地数据库执行查询的方法。 public List> executeQuery(Stri
我正在后台做一些事情。我也尝试将对象写入标准用户默认值。从 iOS 9 开始,它就崩溃了。 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEU
有这样的问题。 我有一些实体类Appartment、Landlord等。现在我正在创建ApartmentDaoImpl,即Apartment的DAO实现。原始类型的一切都很清楚,我可以获得landlo
我有一个单例类,在它的 init 方法中,我设置了一个 NSMutableArray,稍后当我保存它时,应用程序随机崩溃并显示这个崩溃日志,我很确定 recordUploadCnt 不能为nil,但是
我想将来自请求参数的字符串列表作为单个参数传递给 preparedStatement.setObject()。这里我将对象列表转换为单个字符串。 因此,在将这个转换后的字符串传递给 setObject
我已将变量声明为 var optionDictionary : NSMutableDictionary! 尝试在函数中为该变量设置对象,但出现错误 Could not find member 'set
下面两行等效吗? 1. [[NSUserDefaults standardUserDefaults]removeObjectForKey:@“示例 key ”] 2. [[NSUserDefaults
问题是我正在改变 NSDictionary,但即使在获得 mutableCopy 之后,应用程序也会崩溃。 下面是复制的方法: + (NSMutableDictionary *)updateQuery
今天遇到了一个比较迷惑的问题: 当我的应用程序启动时,我正在下载一些东西,在解析响应后,我将数据写入 NSUserDefaults。现在它工作正常,直到我最近发现有时我的整个 UI 会卡住并且在我重新
PreparedStatement.setObject的 Javadoc 说只传递 null 值是不安全的,并建议改用 setNull,这需要传递列 DB 类型。 由于在 Java 中判断空值的类型并
我需要用 NSUserDefaults 保存一个我从 jSON 获得的数组,问题是它只保存第一个字符串而不是所有数组。因此,如果数组类似于 NewYork、London、Rome .. 它只保存 Ne
我有obj-c代码 [dictionary setObject:[[notification object] objectForKey:@"key"] forKey:@"anotherKey"]; 我
我最近在研究运行时序列化并遇到了 ISerializationSurrogate界面。我很困惑它是 SetObject然而方法。 签名是: 对象 SetObjectData(对象对象,System.R
PreparedStatement 的.setObject 方法是否可以用于任何数据类型(String、Integer、 Double、Date、DateTime、Byte Array 等)由 MyS
我能否对所有数据类型(如 String、int 或双)? 如果我使用它会有什么潜在问题? protected void fillStatement(PreparedStatement stmt, Ob
我在 UINavigation 环境中使用它。我有customClassA。它继承customClassB,它的对象之一是 NSMutableDictionary。 我在 viewController
我们有解决方案吗? 我的代码是这样的: preparedStatement.SetObject(i , MyArray); 这里,MyArray 是从表中获取的记录数组。现在,只要上面的语句找到 nu
我确定我正在尝试编写的一个小型 iPhone 程序中遗漏了一些东西,但是代码很简单并且编译没有任何错误,所以我看不出错误在哪里。 我设置了一个 NSMutableDictionary 来存储学生的属性
我是一名优秀的程序员,十分优秀!