سؤال

لدي قاموس من القواميس التي يتم إرجاعها لي في تنسيق JSON

{
    "neverstart": {
        "color": 0, 
        "count": 0, 
        "uid": 32387, 
        "id": 73129, 
        "name": "neverstart"
    }, 
    "dev": {
        "color": 0, 
        "count": 1, 
        "uid": 32387, 
        "id": 72778, 
        "name": "dev"
    }, 
    "iphone": {
        "color": 0, 
        "count": 1, 
        "uid": 32387, 
        "id": 72777, 
        "name": "iphone"
    }
}

أنا أيضا لدي NSArray التي تحتوي على معرف المطلوبة لكل عنصر.على سبيل المثال[72777, 73129]

ما كنت بحاجة إلى أن تكون قادرة على القيام به هو الحصول على قاموس id => اسم العناصر في الصفيف.أعرف أن هذا ممكن من خلال بالتكرار من خلال مجموعة ، ثم حلقات من خلال جميع القيم في القاموس التحقق من القيم ، ولكن يبدو أنه يجب أن يكون هناك أقل عمل متعب طريقة للقيام بذلك.

أعذر جهلي كما أنا فقط أحاول أن أجد طريقي iPhone SDK والتعلم الهدف C و الكاكاو.

هل كانت مفيدة؟

المحلول

أولا بما أنك تستخدم JSON, أنا على أمل كنت قد وجدت بالفعل BSJSONAdditions و/أو json-إطار, كلاهما مشاريع مفتوحة المصدر من أجل جسون في الأم الكاكاو هياكل بالنسبة لك. هذا بلوق وظيفة يعطي فكرة عن كيفية استخدام هذا الأخير للحصول على NSDictionary من سلسلة JSON.

المشكلة ثم يصبح واحدا من العثور على مطابقة القيم في القاموس.أنا لست على بينة من طريقة واحدة أن يفعل ما كنت تبحث عن — الكاكاو أطر قوية جدا ، ولكن تم تصميمها أن تكون عامة جدا ومرنة.ومع ذلك, فإنه لا ينبغي أن يكون من الصعب جدا لوضع معا في الكثير من خطوط...(بما أنك البرمجة على اي فون ، سوف تستخدم سريع التعداد لجعل رمز النظيف.)

NSDictionary* jsonDictionary = ...
NSDictionary* innerDictionary;
NSArray* requiredIDs = ...
NSMutableDictionary* matches = [NSMutableDictionary dictionary];
for (id key in jsonDictionary) {
    innerDictionary = [jsonDictionary objectForKey:key];
    if ([requiredIDs containsObject:[innerDictionary objectForKey:@"id"]])
        [matches setObject:[innerDictionary objectForKey:@"name"]
                    forKey:[innerDictionary objectForKey:@"id"]];
}

هذا الرمز قد الأخطاء المطبعية ، ولكن مفاهيم يجب أن تكون سليمة.نلاحظ أيضا أن الدعوة إلى [NSMutableDictionary dictionary] سوف يعود autoreleased الكائن.

نصائح أخرى

هل حاولت هذه الطريقة NSDictionary:

+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys

وحصلت على الجواب لدرو ... لقد وجدت أن كان دليل دول مجلس التعاون الخليجي لNSDictionary مفيدة بطريقة البدائي في ذلك اليوم عندما كان لدي سؤال مماثل.

http://www.gnustep.org/resources /documentation/Developer/Base/Reference/NSDictionary.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top