initWithContentsOfFile: кодировка: ошибка: - NSInvalidArgumentException - PullRequest
1 голос
/ 08 декабря 2011

Я думаю, что мне чего-то не хватает очень просто здесь, но здесь это идет.

Встроенная справка в XCode сообщает мне, что initWithContentsOfFile: устарело

NSMutableDictionary *myDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];

Вместо initWithContentsOfFile: кодировка: ошибка: следует использовать.

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 Ответ

1 голос
/ 09 декабря 2011

Как указал мне Крис, NSDictionary работает, как и ожидалось.

Я все равно получаю сообщение ниже, хотя при щелчке по методу в XCode, нажимая Alt.Достаточно странно, что документация для 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
...