Iphone 将plist mutablearray中的字符串与相同的字符串进行比较。说不平等
绝对令人困惑的问题是,如果我尝试将可变数组中的字符串从外部plist与字符串进行比较,相同的字符串拒绝承认它们是相同的。但是,如果我直接用字符串创建可变数组,然后尝试比较,它会说它们是相同的 举个例子可能更简单:Iphone 将plist mutablearray中的字符串与相同的字符串进行比较。说不平等,iphone,objective-c,xcode,nsmutablearray,plist,Iphone,Objective C,Xcode,Nsmutablearray,Plist,绝对令人困惑的问题是,如果我尝试将可变数组中的字符串从外部plist与字符串进行比较,相同的字符串拒绝承认它们是相同的。但是,如果我直接用字符串创建可变数组,然后尝试比较,它会说它们是相同的 举个例子可能更简单: NSString *dragDocPath = [documentsDirectory stringByAppendingPathComponent:@"draggable.plist"]; NSMutableArray *dragArray1 = [[NSMutableArray
NSString *dragDocPath = [documentsDirectory stringByAppendingPathComponent:@"draggable.plist"];
NSMutableArray *dragArray1 = [[NSMutableArray alloc] initWithContentsOfFile:dragDocPath];
NSString *s1 = [dragArray1 objectAtIndex:0]; //This is <string>skip</string> and checked with logging
NSString *s2 = @"skip";
if (s1==s2) { //do this
}
else { //do the other important thing
}
结果证明没问题。我在以前的一个测试项目中注意到了这一点,但假设我做了一些明显错误的事情,所以就离开了它
我很困惑
我的plist文件是(它们适用于我所能找到的数组的每一个其他用途)
跳过
任何帮助,指出明显的缺陷等。。。非常感谢
我应该补充一点,我在每一步都记录到了第n级,上面写着“第一是跳过”,“第二是跳过”和“跳过不等于跳过”
编辑:问题已解决,感谢下面的答案。始终使用isEqualToString
例如:
如果([s1 isEqualToString:s2]){..这不是比较字符串的方式,实际上是在比较指针(不同的指针)。应该使用isEqualToString:这不是比较字符串的方式,实际上是在比较指针(不同的指针)。你应该使用IsequalString:完美,谢谢-这让我难倒了一个小时。我想我没有注意到指针在某些情况下工作与在其他情况下不工作之间的区别,所以这是一个很好的教训!我认为rdelmar值得检查完美,谢谢-这让我难倒了一个小时。我想我没有注意到不同之处在某些情况下指针工作,而在其他情况下指针不工作,这是一个很好的教训!我认为rdelmar值得检查
NSMutableArray *dragArray1 = [[NSMutableArray alloc] init];
[dragArray1 addObject:@"skip"];
NSString *s1 = [dragArray1 objectAtIndex:0];
NSString *s2 = @"skip";
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>skip</string>
</array>
</plist>