0

Azure からモバイル サービスを介して SQL データベースからデータを取得する必要がある iOS アプリを作成しています。

データをダウンロードした後NSDictionary、SQL テーブルからすべての属性を取得します。属性が空の場合、値はNSNullです。

IF ステートメントなしで渡す方法はありNSNullますNSStringか (20 個の if ステートメントは必要ありません..)?

4

2 に答える 2

7

この問題に対処するためだけにカテゴリを作成しました。Core Data で使用しましたが、あなたにも役立つはずです。

@interface NSDictionary (Extensions)

- (id)NSNullToNilForKey:(NSString *)key;

@end

@implementation NSDictionary (Extensions)

- (id)NSNullToNilForKey:(NSString *)key
{
    id value = [self valueForKey:key];

    return value != [NSNull null] ? value : nil;
}

@end

サンプル使用:

NSString *value = [dictionary NSNullToNilForKey:@"key"];
于 2014-02-20T23:47:20.370 に答える
2

単に割り当てることはできませんが、次のNSNullようなものを使用してすべてのインスタンスを除外できます。

NSDictionary *dictionary = // data from server
NSDictionary *filteredDictionary = [dictionary mutableCopy];

NSSet *keysToRemove = [orig keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *stop) {
    if (obj == [NSNull null]) {
        return YES;
    } else {
        return NO;
    }
}];
[filteredDictionary removeObjectsForKeys:[keysToRemove allObjects]];

これで、 を持つすべてのキーが削除されたことを除いて、同じ辞書ができNSNullました。

于 2014-02-20T23:49:15.920 に答える