2017-01-05 101 views
0

NSArray聲明會引發錯誤,因爲「NSURL的可見@interface聲明瞭選擇器componentsseparatedbytring」。NSURL沒有可見的@interface聲明選擇器componentsseparatedbystring

NSURL *MyURL = [[NSBundle mainBundle] 
       URLForResource: @"artList" withExtension:@"txt"]; 
NSArray *lines = [MyURL componentsSeparatedByString:@"\n"]; // each line, adjust character for line endings 

for (int i = 0; i < 10; i++) { 
    NSString *line; 
    //in lines; 
    NSLog(@"%@", [NSString stringWithFormat:@"line: %@", line]); 
    _wordDefBox.text = [NSString stringWithFormat:@"%@%@",_wordDefBox.text, lines]; 
} 
+0

'componentsSeparatedByString:'是一個'NSString'方法,而不是'NSURL'。我猜你想要的是:'+ stringWithContentsOfURL:encoding:error:',然後在其上使用'componentsSeparatedByString:'。 – Larme

回答

2

您錯過了一個步驟。獲得URL後,您需要將文件加載到NSString。然後在NSString上撥打componentsSeparatedByString

NSURL *myURL = [[NSBundle mainBundle] 
       URLForResource: @"artList" withExtension:@"txt"]; 
NSError *error = nil; 
// Use the appropriate encoding for your file 
NSString *string = [NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:&error]; 
if (string) { 
    NSArray *lines = [string componentsSeparatedByString:@"\n"]; 
    // and the rest 
} else { 
    NSLog(@"Unable to load string from %@: %@", myURL, error); 
} 
0

一般來說,當你看到這樣的錯誤就意味着 X(此處NSURL)沒有任何方法命名爲Y(例如componentsseparatedbystring),或至少它沒有它在它的接口即它不是它的公開方法,它可能是私有方法並且可用於其實現。總是試着理解編譯器告訴你什麼。要了解更多信息,您可以在任何課程上點擊「Cmmd + click」,它會將您帶到它的界面,並且您可以查看它具有的公共方法。試試NSStringNSURL

具體在這裏:NSURL沒有該方法。它不屬於NSURL,它屬於NSString

相關問題