- [__ NSSingleObjectArrayI floatValue]: нераспознанный селектор, отправленный экземпляру - PullRequest
0 голосов
/ 25 октября 2019

Ниже приведен мой ответ

geolocation =         {
        loc =             {
            lat = "22.4409980000000004451976565178";
            long = "70.0686230000000023210304789245";
        };
    };  

Мое приложение вылетает при попытке выполнить код ниже:

NSNumber* n = [userPin valueForKeyPath:@"geolocation.loc.lat"];
NSLog(@"num is class %@", NSStringFromClass([n class]));
float fCost = [n floatValue];  

Когда я печатаю свой NSStringFromClass, я получаю __NSSingleObjectArrayI.

Есть предложения, как это исправить?

1 Ответ

0 голосов
/ 25 октября 2019

По предположению тип (100) * (во время выполнения) является массивом и содержит один элемент. При применении к массиву valueForKey:, на котором основан valueForKeyPath:, возвращает массив, созданный путем применения самого себя к каждому элементу массива.

Если это так, либо индекс userPin перед вызовомили обработать массив, полученный в результате вызова.

Приложение

Не могли бы вы привести пример?

Тривиальный пример:

// An array of strings
NSArray *test = @[ @"The", @"quick", @"brown", @"fox"];
// Trivial keypath...
NSArray *result = [test valueForKeyPath:@"length"];
// Print
NSLog(@"%@", result);

Производит:

(
    3,
    5,
    5,
    3
)

, показывая result - массив результата применения length к каждому элементу `test. НТН

...