2009-10-30 25 views
8

Tôi đã có một phương pháp phân tích cú pháp RSS và tôi cần xóa khoảng trống và các điều vô nghĩa khác khỏi bản tóm tắt html đã trích xuất của tôi. Tôi đã có một loại NSMutableString 'currentSummary'. Khi tôi gọi:NSMutableString stringByReplacingOccurrencesOfString Warning

currentSummary = [currentSummary 
     stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

Xcode nói với tôi "cảnh báo: phân công từ loại riêng biệt Objective-C"

Có gì sai với điều này?

Trả lời

38

Nếu currentSummary đã là NSMutableString, bạn không nên cố gắng chỉ định NSString thông thường (kết quả là stringByReplacingOccurrencesOfString:withString:) cho nó.

Thay vì sử dụng có thể thay đổi tương đương replaceOccurrencesOfString:withString:options:range:, hoặc thêm một cuộc gọi đến mutableCopy trước khi việc chuyển nhượng:

// Either 
[currentSummary replaceOccurencesOfString:@"\n" 
           withString:@"" 
            options:NULL 
            range:NSMakeRange(0, [receiver length])]; 

// Or 
currentSummary = [[currentSummary stringByReplacingOccurrencesOfString:@"\n" 
                  withString:@""] 
        mutableCopy];
+0

Cảm ơn bạn! Làm việc tuyệt vời. – quantum

+0

Tuyệt vời! Cảm ơn nhiều! +1 –

0

Đó thường có nghĩa là bạn bỏ các dấu sao trong định nghĩa của (trong trường hợp này) currentSummary.

Vì vậy, nhiều khả năng bạn có:

NSMutableString currentSummary; 

khi bạn cần:

NSMutableString *currentSummary; 

Trong trường hợp đầu tiên, kể từ khi các lớp học Objective-C được định nghĩa trong cấu trúc loại, trình biên dịch cho rằng cố gắng của bạn để gán một NSString cho một cấu trúc.

Tôi làm lỗi đánh máy này trên cơ sở thường xuyên.

3

này hoạt động tuyệt vời cho các yếu tố lồng nhau cũng tất nhiên:

* Sửa *

// 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]]; 

    } 

Đoạn code dưới đây, như thể hiện trong việc sử dụng hợp cụ thể nêu trên có thể hữu ích.

[self.contentTitleArray addObject:[[contentTitle 
            stringByReplacingOccurrencesOfString:@"&" 
            withString:@"&"] 
            mutableCopy]]; 
+0

Xin chào, Pat! Tôi không chắc câu trả lời của bạn thực sự trả lời câu hỏi được hỏi. Tôi cũng khuyên bạn nên thay vì giải thích "contentTitleArray là ..." bạn chỉ có thể viết một số mã ví dụ. Bạn biết đấy, yêu cầu tối thiểu để cả bạn và người hỏi câu hỏi đều có cơ sở chung để hiểu ý nghĩa của từng bạn. Cảm ơn bạn đã dành thời gian để viết câu trả lời và chúc may mắn trên Stack Overflow! – scraimer

+1

OK, tôi đã tiếp tục và thêm trường hợp sử dụng của mình. Hy vọng rằng điều này sẽ hữu ích cho người qua đường. – Pat

Các vấn đề liên quan