Передача строки Swift и метод Objective-C вызывает потерю строки - PullRequest
0 голосов
/ 14 января 2019

Я передаю строку Swift моему методу фреймворка Objective-C, который принимает строку NSString. Однако иногда (не всегда, в зависимости от значения) он не преобразуется в строку NSString.

Насколько я понимаю, это произойдет.

Если я явно приведу строку Swift к строке NSString, метод фреймворка вызовет ошибку.

enter image description here

-(id)setField: (NSString*)nme
recordTypeName: (NSString*)recordTypeName
   parentName: (NSString*)parent
   parentEnumVal: (NSInteger)parentEnumVal
     dataType: (eFieldDataType)dataType
       dbType: (eFieldType)dbType
      enumVal: (NSInteger)enumVal;

Иногда отладчик показывает NSTaggedPointerString с правильно показанной строкой.

Также снова NSCFString с правильной строкой.

Затем _TtCs19_NSContiguousString снова со значением, но впоследствии оно теряется при последующем чтении, показывая совершенно другой класс.

Я бы попробовал более новую версию XCode, но я использую последнюю. Я думаю, что это должно быть ошибка XCode.

EDIT:

Ошибка возникает при последующем чтении поля

enter image description here

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Был

@property (nonatomic, readwrite, assign) NSString *name;

Исправлено с

@property (nonatomic, readwrite, copy) NSString *name;
0 голосов
/ 14 января 2019

String неявно соединен с NSString, просто объявите строку Swift

let user_name = "user_name"
...