Tôi đã thử kiểm tra sự xuất hiện của chuỗi con trong một NSString theo hai cách, cả hai đều bị lỗi. Đây là một đối tượng NSString mà tôi nhận được từ một thuộc tính của NSManagedObject.Kiểm tra chuỗi con của lỗi NSString
Sử dụng NSRange
NSString *searchString = @"drive";
NSRange range = [text rangeOfString:searchString options:(NSCaseInsensitiveSearch)];
if (range.location != NSNotFound) { NSLog(@"Found"); }
Sử dụng NSScanner
NSScanner *scanner = [NSScanner scannerWithString:text];
NSLog(@"%d",[scanner scanString:searchString intoString:nil]);
Cả hai công việc này khi văn bản = @ "drive" nhưng gây ra EXC_BAD_ACCESS tai nạn khi văn bản là "i drive", hoặc "drive to". Không có gì xảy ra nếu văn bản là "idrive" hoặc "driveto".
Ngay cả người lạ, đôi khi các ví dụ ném NSInvalidArgumentExceptions, nói rằng tôi đã cố gắng để vượt qua một đối tượng NSCFSet hoặc DateComponents để rangeOfString :, không phải trong số đó tôi sử dụng trong ứng dụng của tôi.
Bất kỳ ý tưởng nào?
Văn bản là gì? Nó chứa gì? –
Cuộc gọi phương thức nào gặp sự cố? Văn bản được tạo như thế nào? Đặt cược của tôi là văn bản đã hết hạn và không còn hợp lệ nữa. – zaph
@ JeremyP Tôi nghĩ rằng những gì đang xảy ra là tôi nhận được thuộc tính chuỗi từ NSManagedObject của tôi, như vậy: text = managedObject.text; sau đó tôi xóa managedObject. Vì vậy, tôi phải nói rằng văn bản không chứa một chuỗi, nó có chứa một con trỏ đến managedObject.text, mà không còn tồn tại? – ntesler