#include #include int sub_array (CFArrayRef subArray); int main_array (CFStringRef file); void countCharacters(const void *val, void *context) // CFArrayApplierFunction { CFStringRef str = (CFStringRef)val; CFIndex *cnt = (CFIndex *)context; CFIndex numchars = CFStringGetLength(str); *cnt += numchars; } int main (int argc, const char * argv[]) { // string array. CFStringRef strs[3] = { CFSTR("String One"), CFSTR("String Two"), CFSTR("String Three") }; CFArrayRef arr_string = CFArrayCreate(NULL, (const void **)strs, 3, &kCFTypeArrayCallBacks); CFShow(arr_string); // apply a function to the array. CFIndex count=0; CFRange range = CFRangeMake(0,CFArrayGetCount(arr_string)); CFArrayApplyFunction(arr_string, range, countCharacters, &count); CFStringRef foo = CFStringCreateByCombiningStrings (NULL, arr_string, CFSTR(", ")); printf("%d\n", count); CFShow(foo); CFRelease(foo); CFRelease(arr_string); return 0; } int main_array (CFStringRef file) { // string array. CFStringRef strs[3] = { CFSTR("String One"), CFSTR("String Two"), CFSTR("String Three") }; CFArrayRef arr_string = CFArrayCreate(NULL, (const void **)strs, 3, &kCFTypeArrayCallBacks); CFShow(arr_string); // apply a function to the array. CFIndex count=0; CFRange range = CFRangeMake(0,CFArrayGetCount(arr_string)); CFArrayApplyFunction(arr_string, range, countCharacters, &count); printf("%d\n", count); CFRelease(arr_string); return 0; } int sub_array (CFArrayRef subArray) { CFDateFormatterRef format; CFStringRef type, date; Boolean num, val; CFTypeRef value; const char * v; long cfnum; int i; CFIndex count = CFArrayGetCount(subArray); for (i = 0; i < count; i++) { value = CFArrayGetValueAtIndex(subArray, i); type = CFCopyTypeIDDescription(CFGetTypeID(value)); if (CFStringCompare(type, CFSTR("CFBoolean"), 0) == 0) { num = CFBooleanGetValue(value); printf("%d\n", num); } if (CFStringCompare(type, CFSTR("CFDate"), 0) == 0) { format = CFDateFormatterCreate(NULL, NULL, kCFDateFormatterShortStyle, kCFDateFormatterShortStyle); CFDateFormatterSetFormat(format, CFSTR("yyyy-MM-dd HH:mm:ss Z")); date = CFDateFormatterCreateStringWithDate(NULL, format, value); v = CFStringGetCStringPtr(date, kCFStringEncodingMacRoman); printf("%s\n", v); } if (CFStringCompare(type, CFSTR("CFNumber"), 0) == 0) { val = CFNumberGetValue((CFNumberRef)value, kCFNumberLongType, &cfnum); printf("%d\n", cfnum); } if (CFStringCompare(type, CFSTR("CFString"), 0) == 0) { v = CFStringGetCStringPtr(value, kCFStringEncodingMacRoman); printf("%s\n", v); } } return 0; } #pragma mark - #pragma mark DB Callbacksstatic pascal // unsigned char * c = CFStringGetCStringPtr(type, kCFStringEncodingMacRoman); // if (c) { // printf("%s\n", c); // } // if (print_key) // CFShow(print_key); // CFRelease(print_key); // CFIndex count = MDQueryGetResultCount(query); // for (i = 0; i < count; i++) { // MDItemRef item = MDQueryGetResultAtIndex(query, i); // }