Итак, я нахожусь в ОС, приложение Xcode, в коде Objective-C. Вот то, что я до сих пор:Objective-C Как использовать токены для NSArrays?
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
/// IN THIS CHALLENGE, I HAVE TO MAKE MY OWN PLIST
/// IT HAS TO INCLUDE ALL 8 TYPES: ARRAY, DICTIONARY, STRING, DATA, DATE, INTEGER, FLOAT, AND BOOLEAN...
// Add the elements
NSMutableArray *array;
NSMutableDictionary *dictionary;
NSString *string;
NSData *data;
NSDate *date;
int integer;
float floating;
BOOL boolean;
// Set up the elements
[array addObject:[NSString stringWithFormat:@"\"Array\""]];
[dictionary setObject:@"\"Dictionary\""
forKey:@"dic"];
string = [NSString stringWithFormat:@"\"String\""];
data = [NSData dataWithContentsOfFile:@"/tmp/cool.text"];
date = [NSDate date];
integer = 50;
floating = 50.5;
boolean = YES;
// Log them out
NSLog(@"Array: %@\n\n", array);
NSLog(@"Dictionary: %@\n\n", dictionary);
NSLog(@"String: %@\n\n", string);
NSLog(@"Data: %@\n\n", data);
NSLog(@"Date: %@\n\n", date);
NSLog(@"Integer: %d\n\n", integer);
NSLog(@"Float: %f\n\n", floating);
NSLog(@"Boolean: %hhd\n\n", boolean);
}
return 0;
}
Итак, что это «вызов» (из книги кодирования я ниже) должен сделать, это распечатать значения каждого из них в консоли. Но у меня проблема. При запуске приложения, журнал печатает это:
2015-05-08 14: 48: 23.588 ЗАДАЧА 7. Plist [21817: 1995500] Массив: (нуль)
2015-05 -08 14: 48: 23,590 ЗАДАЧА 7. Plist [21817: 1995500] Словарь: (нуль)
2015-05-08 14: 48: 23,590 ЗАДАЧА 7. Plist [21817: 1995500] Строка: «Строка "
2015-05-08 14: 48: 23.590 CHALLENGE 7. Plist [21817: 1995500] Данные: < 43687269 73746961 6e206973 20636f6f 6c210a43 68726973 7469616e 20697320 636f6f6c 210a4368 72697374 69616e20 69732063 6f6f6c21 0a436872 69737469 616e2069 7320636f 6f6c210a 43687269 73746961 6e206973 20636f6f 6c210a43 68726973 7469616e 20697320 636f6f6c 210a4368 72697374 69616e20 69732063 6f6f6c21 0a436872 69737469 616e2069 7320636f 6f6c210a 43687269 73746961 6e206973 20636f6f 6c210a43 68726973 20697320 7469616e 636f6f6c 21>
2015-05-08 14: 48: 23,596 ЗАДАЧА 7. Plist [21817: 1995500] Дата: 2015-05-08 19:48:23 +0000
2015-05-08 14: 48: 23,596 ЗАДАЧА 7. Plist [21817: 1995500] Целое число: 50
2015-05-08 14: 48: 23,596 ЗАДАЧА 7. Plist [21817: 1995500] Поплавок: 50,500000
2015-05-08 14: 48: 23,597 ЗАДАЧА 7. Plist [21817: 1995500] Логическое: 1
Таким образом, это нормально, но я хотел бы некоторую помощь о том, как использовать NSLog() для правильной печати значений. Как вы можете видеть, как массив, так и словарь распечатываются как (null), или, вернее, без значения. И данные из файла, содержащего слова «Random Text», не распечатывают значение String. Кажется, он распечатывает не-человекочитаемое значение самого файла. Это потому, что я использовал токен% @ с этими? Если да, то что должно Я использую?
Они печатаются как '(null)', потому что они 'nil'. Вы никогда не инициализируете их. – rmaddy
'(null)' в выходе NSLog означает, что указатель 'nil'. Помните, что Objective-C будет с удовольствием работать без операций с nil-указателями. –
Вам не нужен все escape-код '\' 'Пример:' [array addObject: @ "Array"]; 'и' [dictionary setObject: @ "Словарь" forKey: @ "dic"]; 'или использование Литеральный синтаксис: 'dictionary [@" dic "] = @" Словарь ";'. – zaph