ios - 如何简化此代码(转换为NSDictionary)?

标签 ios objective-c applozic

我想将响应转换为NSDictionary。响应是ALRegistrationResponse(https://github.com/AppLozic/Applozic-Chat-iOS-Framework/blob/master/Applozic/DomainClasses/ALRegistrationResponse.m)的实现。

NSDictionary *_response = @
{
    @"message":[response message] != nil ? [response message] : [NSNull null],
    @"deviceKey":[response deviceKey] != nil ? [response deviceKey] : [NSNull null],
    @"userKey":[response userKey] != nil ? [response userKey] : [NSNull null],
    @"contactNumber":[response contactNumber] != nil ? [response contactNumber] : [NSNull null],
    @"lastSyncTime":[response lastSyncTime] != nil ? [response lastSyncTime] : [NSNull null],
    @"currentTimeStamp":[response currentTimeStamp] != nil ? [response currentTimeStamp] : [NSNull null],
    @"brokerURL":[response brokerURL] != nil ? [response brokerURL] : [NSNull null],
    @"imageLink":[response imageLink] != nil ? [response imageLink] : [NSNull null],
    @"statusMessage":[response statusMessage] != nil ? [response statusMessage] : [NSNull null],
    @"encryptionKey":[response encryptionKey] != nil ? [response encryptionKey] : [NSNull null],
    @"displayName":[response displayName] != nil ? [response displayName] : [NSNull null],
    @"notificationSoundFileName":[response notificationSoundFileName] != nil ? [response notificationSoundFileName] : [NSNull null]
};

最佳答案

至少更干净的是以下语法:

NSDictionary *_response = @{
    @"message": [response message] ?: [NSNull null],
    @"deviceKey": [response deviceKey] ?: [NSNull null],
    @"userKey": [response userKey] ?: [NSNull null],
    @"contactNumber": [response contactNumber] ?: [NSNull null],
    @"lastSyncTime": [response lastSyncTime] ?: [NSNull null],
    @"currentTimeStamp": [response currentTimeStamp] ?: [NSNull null],
    @"brokerURL": [response brokerURL] ?: [NSNull null],
    @"imageLink": [response imageLink] ?: [NSNull null],
    @"statusMessage": [response statusMessage] ?: [NSNull null],
    @"encryptionKey": [response encryptionKey] ?: [NSNull null],
    @"displayName": [response displayName] ?: [NSNull null],
    @"notificationSoundFileName": [response notificationSoundFileName] ?: [NSNull null]
};

关于ios - 如何简化此代码(转换为NSDictionary)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755525/

相关文章:

ios - 在 iOS 中使用 ARC 对 dealloc 进行单元测试

ios - sqlite 无法访问,仅在 iPhone 6 和 6 plus 中失败

ios - 如何在applozic框架中自动重新加载聊天消息/聊天列表

android - Applozic ConversationActivity 到 fragment

android - Applozic 的 Android 中的 ConversationActivity 在哪里?

ios - 有什么好的 iOS 5 书籍出版了吗?

iphone - UILongPressGestureRecognizer 可以和 touchesMoved 这样的触摸事件一起使用吗?

ios - 从 Ionic 迁移到 Native (IOS)

ios - 如何在不子类化的情况下使所有 UITextViews 的背景变成紫色?

ios - 鸟舍整合问题