簡體   English   中英

找出值是否來自JSON是布爾值(true / false)

[英]find out if value fron a JSON was a boolean (true/false)

我在NSManagedObject上編碼一個類別,因此它可以從我從JSON獲得的NSDictionnary本身(通過NSJSONSerialization)填充其屬性

我的問題是:如果原始值是true或false,則將其轉換為NSNumber,但如果且僅當它最初是BOOL時,我想將其作為BOOL插入到托管對象中(我知道boolValue)而不是數字。 到目前為止,我的相關代碼是:

if ([value isKindOfClass:[NSNumber class]])
        {
            if (NSClassFromString(@"__NSCFBoolean") && [value isKindOfClass:NSClassFromString(@"__NSCFBoolean")]) {
                [self setValue:[NSNumber numberWithBool:[value boolValue]] forKey:key];
            } else if (NSClassFromString(@"NSCFBoolean") && [value isKindOfClass:NSClassFromString(@"NSCFBoolean")]) {
                [self setValue:[NSNumber numberWithBool:[value boolValue]] forKey:key];
            } else {
                [self setValue:value forKey:key];
            }
        }

我得到錯誤:

由於未捕獲的異常'NSUnknownKeyException'而終止應用程序,原因:'[setValue:forUndefinedKey:]:此類與鍵myJsonOriginalKeyName的鍵值編碼兼容

同樣,我的托管對象在原始JSON中值為ID true / false時,具有對應鍵的布爾屬性,該如何自動確定將值轉換為BOOL還是NSNumber

我現在正在我的應用程序中執行此操作,雖然-完全-尚未完全批准,但使用iOS7中的NSJSONSerialization似乎可以正常工作:

if(strcmp([num objCType], "c") == 0) {
   // its a boolean
   ...

蘋果在類說明中說的告誡我們,您不能指望這一點是一致的。 就是說,如果NSJSONSerialization只使用一種方法來轉換導致這種類型的布爾值,那么它可能不會很快改變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM