我有一个RSS解析器方法,我需要从我提取的html摘要中删除空格和其他废话。我有一个NSMutableString类型'currentSummary'。我打电话的时候:
currentSummary = [currentSummary
stringByReplacingOccurrencesOfString:@"\n" withString:@""];
Xcode告诉我“警告:从不同的Objective-C类型分配”
这有什么问题?
答案 0 :(得分:38)
如果currentSummary
已经是NSMutableString,则不应尝试为其分配常规NSString(stringByReplacingOccurrencesOfString:withString:
的结果)。
而是使用可变等效replaceOccurrencesOfString:withString:options:range:
,或在分配前添加对mutableCopy
的调用:
// Either
[currentSummary replaceOccurencesOfString:@"\n"
withString:@""
options:NULL
range:NSMakeRange(0, [receiver length])];
// Or
currentSummary = [[currentSummary stringByReplacingOccurrencesOfString:@"\n"
withString:@""]
mutableCopy];
答案 1 :(得分:3)
当然,这对于嵌套元素非常有用:
*的 被修改 * 强>
// Get the JSON feed from site
myRawJson = [[NSString alloc] initWithContentsOfURL:[NSURL
URLWithString:@"http://yoursite.com/mobile_list.json"]
encoding:NSUTF8StringEncoding error:nil];
// Make the content something we can use in fast enumeration
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSDictionary * myParsedJson = [parser objectWithString:myRawJson error:NULL];
[myRawJson release];
allLetterContents = [myParsedJson objectForKey:@"nodes"];
// Create arrays just for the title and Nid items
self.contentTitleArray = [[NSMutableArray alloc]init];
for (NSMutableDictionary * key in myArr) {
NSDictionary *node = [key objectForKey:@"node"];
NSMutableString *savedContentTitle = [node objectForKey:@"title"];
// Add each Title and Nid to specific arrays
//[self.contentTitleArray addObject:contentTitle];
//change each item with & to &
[self.contentTitleArray addObject:[[savedContentTitle
stringByReplacingOccurrencesOfString:@"&"
withString:@"&"]
mutableCopy]];
}
以下代码,如上面的用例所示可能会有所帮助。
[self.contentTitleArray addObject:[[contentTitle
stringByReplacingOccurrencesOfString:@"&"
withString:@"&"]
mutableCopy]];
答案 2 :(得分:0)
这通常意味着您在(在本例中)currentSummary的定义中删除了星号。
所以你最有可能:
NSMutableString currentSummary;
当您需要时:
NSMutableString *currentSummary;
在第一种情况下,由于Objective-C类是在类型结构中定义的,因此编译器认为您尝试将NSString分配给结构。
我经常打扰这个错字。