Objective c 更改字符串的值

Objective c 更改字符串的值,objective-c,cocoa-touch,nsstring,Objective C,Cocoa Touch,Nsstring,我在更改NSString的值时遇到问题 在我的类中声明如下: @property (strong, nonatomic)NSMutableString *votes; song.votes = [dict objectForKey:@"Votes"]; song.votes =[responseArr valueForKey:@"CNT"]; 创建对象时,其设置如下: @property (strong, nonatomic)NSMutableString *votes; song.vo

我在更改NSString的值时遇到问题

在我的类中声明如下:

@property (strong, nonatomic)NSMutableString *votes;
song.votes = [dict objectForKey:@"Votes"];
song.votes =[responseArr valueForKey:@"CNT"];
创建对象时,其设置如下:

@property (strong, nonatomic)NSMutableString *votes;
song.votes = [dict objectForKey:@"Votes"];
song.votes =[responseArr valueForKey:@"CNT"];
最后是麻烦发生的地方。稍后在我的代码中,我尝试修改如下值:

@property (strong, nonatomic)NSMutableString *votes;
song.votes = [dict objectForKey:@"Votes"];
song.votes =[responseArr valueForKey:@"CNT"];
这条线导致了这次事故:

“NSInvalidArgumentException”,原因:“-[\uu NSCFString SetVoces]: 已将无法识别的选择器发送到实例0x14f84430'

我想我的问题是由以下原因之一造成的: 1.错误设置上述属性。我试着将它设置为复制,也设置为非原子,但它做的事情是一样的。
2.我需要为此使用NSMutableString。我尝试将其更改为NSMutableString,但当它更改时仍会崩溃。诚然,我正在初始化它并以使用NSMutableString时的方式进行更改,我不完全确定如何在其可更改时进行更改。

我认为问题在于您分配/设置歌曲对象的方式。在设置第一个值和第二个值之间的某个地方,您可能正在取消分配song,然后尝试设置它的属性,或者您正在修改它,使它不再是同一类类型

发送到实例0x14f84430'的无法识别的选择器几乎为您总结了它。第二次尝试设置Voces属性时,它会尝试从song访问合成的setter SetVoces,这不再是您认为的类

从错误中可以看出,您可能正在将歌曲重新分配为NSString对象。这就是为什么它试图访问NSString上的setVoces方法,而这样的方法不存在,所以它退出并崩溃。 你确定你没有做类似于song=[someString]

如果需要NSString的可变副本,请使用-mutableCopy

假设responseArr是一个数组,[responseArr valueForKey:@CNT]返回一个数组,其中包含responseArr中每个实例的返回值。您的属性用于NSMutableString,但您将其设置为NSArray


此外,请提供崩溃时出现的实际错误,而不是只说“it crash”。

崩溃时给出的消息是什么?@Tommy-对不起,用消息更新了原始帖子错误消息声明歌曲本身是字符串。有没有可能发生这种情况?是的,你是对的……根据不知何故发生的调试器,我目前正在调查。你怎么能从那条消息中分辨出来?你可以从那条消息中分辨出来,因为它准确地告诉你——你打了一个看起来像[\uu NSCFString setvows]的电话__NSCFString是NSString的内部类名。我的函数搜索一首歌曲并返回它…在某个地方它没有返回歌曲,所以一直为零…这总是很小的事情!