initWithContentsOfFile: кодировка: ошибка: - NSInvalidArgumentException
Я думаю, что я упускаю что-то очень простое здесь, но здесь это идет.
Встроенная справка в XCode сообщает мне, что initWithContentsOfFile: устарел
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
Вместо этого следует использовать initWithContentsOfFile:encoding:error:
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath encoding:NSUTF8StringEncoding error:NULL];
Моя проблема в том, что initWithContentsOfFile: работает нормально, в то время как приведенный ниже код вызывает ошибку.
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"prefs" ofType:@"plist"];
Load preferences into symbol dictionary
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath encoding:NSUTF8StringEncoding error:NULL];
ОШИБКА:
2011-12-08 16:27:12.209 -[__NSPlaceholderDictionary initWithContentsOfFile:encoding:error:]: unrecognized selector sent to instance 0x4b2a370
2011-12-08 16:27:12.212 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSPlaceholderDictionary initWithContentsOfFile:encoding:error:]: unrecognized selector sent to instance 0x4b2a370'
1 ответ
Как указал мне Крис, NSDictionary работает, как и ожидалось.
Я все еще получаю сообщение ниже, когда alt-щелкает метод в XCode, хотя. Как ни странно, документация предназначена для NSString, а НЕ для NSDictionary. Надо было надеть очки для чтения, еще раз спасибо Крис за указание на ответ!
initWithContentsOfFile:
Initializes the receiver, a newly allocated NSString object, by reading data from the file named by path. (Deprecated in iOS 2.0. Use initWithContentsOfFile:encoding:error: or initWithContentsOfFile:usedEncoding:error: instead.)
- (id)initWithContentsOfFile:(NSString *)path
Discussion
Initializes the receiver, a newly allocated NSString object, by reading data from the file named by path. If the contents begin with a byte-order mark (U+FEFF or U+FFFE), interprets the contents as Unicode characters; otherwise interprets the contents as data in the default C string encoding. Returns an initialized object, which might be different from the original receiver, or nil if the file can’t be opened.
Availability
Available in iOS 4.0 and later.
Deprecated in iOS 2.0.
See Also
– initWithContentsOfFile:encoding:error:
– initWithContentsOfFile:usedEncoding:error:
Declared In
NSString.h