سؤال

أقوم بإطار عمل ولدي هذا الرمز (conditions هو nsdictionary):

for (NSString *key in conditions) {
    id value = [[conditions valueForKey:key] retain];


    // Check if number or string
    if ([value class] == [NSString class]) {
      conditionsString = [NSString stringWithFormat:@"%@='%@' ", key, value];
    } else {
      conditionsString = [NSString stringWithFormat:@"%@=%@ ", key, value];
    }
  }

إذا value هو NSString ، يجب إضافة عروض الأسعار ، وإلا يجب عدم إضافة الرموز. ومع ذلك ، إن لم يكن NSString ، لا أعرف نوع البيانات من value, ، كما يمكن أن يكون nsnumber ، nsinteger ، int ، تعويم ، مزدوجة ، إلخ ... لا يمكنني استخدام فقط %@ أو %d لكنني متأكد من أن شخصًا ما يعرف كيف يفعل هذا؟ شكرًا.

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

المحلول

القي نظرة على هذه.

تحرير: في حالتك ، من السهل جدًا ، لأن NSDictionary لا يمكن أن تحتوي إلا على nsobjects. لذلك ٪@ سوف تفعل الخدعة.

نصائح أخرى

يمكنك التحقق من الفصل (kindofclass) ثم استخدام التنسيق المناسب.

على سبيل المثال

if ( [myObj isKindOfClass:[NSString class]] )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top