【发布时间】:2014-09-06 23:52:29
【问题描述】:
类定义如下:
@interface KNBookmark : NSObject
@property (nonatomic, strong) NSString *bookmarkId ;
@property (nonatomic, strong) NSString *novelName ;
@property (nonatomic, strong) NSString *novelId ;
@property (nonatomic, strong) NSString *novelPic ;
@property (nonatomic, strong) NSString *articleId ;
@property (nonatomic, strong) NSString *articleTitle ;
@property (nonatomic, strong) NSNumber *readRate ;
@end
@interface KNArticle : NSObject
@property (nonatomic, strong) NSString *num ;
@property (nonatomic, strong) NSString *articleId ;
@property (nonatomic, strong) NSString *title ;
@property (nonatomic, strong) NSString *subject ;
@property (nonatomic, strong) NSString *text ;
@end
源代码:
for(int i=0;i<count;i++)
{
KNArticle* article=[self.novel.articles objectAtIndex:i];
NSLog(@"bookmark articleId='%@' articleId='%@'",self.bookmark.articleId,article.articleId);
NSLog(@"bookmark articleId class='%@' articleId class='%@'",[self.bookmark.articleId class],[article.articleId class]);
if([self.bookmark.articleId isEqualToString:article.articleId])
{
NSLog(@"equal");
self.indexArticles=i;
break;
}
else
NSLog(@"not equal");
}
NSLog 输出如下:
2014-07-16 22:56:14.768 novel[12685:90b] bookmark articleId='5680285' articleId='5680285'
2014-07-16 22:56:14.768 novel[12685:90b] bookmark articleId class='__NSCFString' articleId class='__NSCFNumber'
2014-07-16 22:56:14.769 novel[12685:90b] not equal
为什么“5680295”不等于“5680295”? 我尝试了以下代码:
NSString* id1=@"5680295";
NSString* id2=@"5680295";
if([id1 isEqualToString:id2])
{
NSLog(@"equal");
}
上面的代码显示“等于”,但我还是不知道为什么?
【问题讨论】:
-
这些日志行中有 5 秒的间隔。这是为什么呢?
-
@trojanfoe,这可能只是 OP 在调试器中单步执行。
-
我认为它可能是类型转换问题。你能同时匹配两者都是
NSString还是不使用isKindOfClass像if([article.articleId isKindOfClass:[NSString class]]) -
嗯...有没有可能
articleId是NSNumber? -
KNArticle是什么类?它的子类是什么?
标签: ios objective-c