Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在URL的NSArray中循环-崩溃-iOS_Ios_Objective C_Url_For Loop_Nsarray - Fatal编程技术网

在URL的NSArray中循环-崩溃-iOS

在URL的NSArray中循环-崩溃-iOS,ios,objective-c,url,for-loop,nsarray,Ios,Objective C,Url,For Loop,Nsarray,我希望通过我的NSArray*URL循环-对每个对象进行一些字符串调整 但是,一旦它进入For循环并尝试调整NSString*对象,就会抛出异常 你知道我为什么被难住了吗 - (void)GetData { NSFileManager *fm = [NSFileManager defaultManager]; NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDire

我希望通过我的NSArray*URL循环-对每个对象进行一些字符串调整

但是,一旦它进入For循环并尝试调整NSString*对象,就会抛出异常

你知道我为什么被难住了吗

 - (void)GetData
    {
        NSFileManager *fm = [NSFileManager defaultManager];
        NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        directory = [NSString stringWithFormat:@"%@/%@/%@/%@", directory, self.researcherID, self.participantID, testTypeString];
        directory = [directory stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSError *error;
        NSURL *url = [NSURL URLWithString:directory];
        NSArray *urls = [fm contentsOfDirectoryAtURL:url includingPropertiesForKeys:nil options:0 error:&error];


        for (int x = 0; x < urls.count; x++) {

            NSString *urlIndex = urls[x];


            NSString *thing = [urlIndex stringByReplacingOccurrencesOfString:@"%20" withString:@" "];
            thing = [thing stringByReplacingOccurrencesOfString:@"file://" withString:@""];


            // add thing to new array but crashes before i can
        }
    }
返回
NSURL
对象的数组,而不是
NSString
s。您可以将URL转换为字符串 简单地

NSString *path = [urls[x] path];
这使得字符串操作过时。或者,使用

NSArray *files = [fm contentsOfDirectoryAtPath:directory error:&error];
它返回一个
NSString
对象数组,而不是
NSURL
s

返回
NSURL
对象的数组,而不是
NSString
s。您可以将URL转换为字符串 简单地

NSString *path = [urls[x] path];
这使得字符串操作过时。或者,使用

NSArray *files = [fm contentsOfDirectoryAtPath:directory error:&error];

它返回一个
NSString
对象数组,而不是
NSURL
s。

抛出的异常非常明显

'-[NSURL stringByReplacingOccurrencesOfString:withString:]: unrecognized selector
您正在将消息stringByReplacingOccurrencesOfString:withString:发送到NSURL类的对象,该对象无法识别它。这就是问题所在

你很幸运;调用使用您自己的代码,如下所示:

NSString *thing = [urlIndex stringByReplacingOccurrencesOfString:@"%20" withString:@" "];
假设URLDINDEX是一个NSString,但实际上它是一个NSURL,因此必须找到正确的NSURL方法。将数组元素分配给NSString*并不能使其成为NSString*


将来:在Xcode中,设置一个断点,触发所有异常,这样当发现问题时,您将在它崩溃之前停止。这样,您将看到调用堆栈,并可以在代码中找到问题的根源

抛出的异常非常明显

'-[NSURL stringByReplacingOccurrencesOfString:withString:]: unrecognized selector
您正在将消息stringByReplacingOccurrencesOfString:withString:发送到NSURL类的对象,该对象无法识别它。这就是问题所在

你很幸运;调用使用您自己的代码,如下所示:

NSString *thing = [urlIndex stringByReplacingOccurrencesOfString:@"%20" withString:@" "];
假设URLDINDEX是一个NSString,但实际上它是一个NSURL,因此必须找到正确的NSURL方法。将数组元素分配给NSString*并不能使其成为NSString*


将来:在Xcode中,设置一个断点,触发所有异常,这样当发现问题时,您将在它崩溃之前停止。这样,您将看到调用堆栈,并可以在代码中找到问题的根源

AAAA和。。。。有什么例外?@MichaelDautermann-Whoops-忘了提一下,我现在编辑了我的帖子。@Ben也使用了快速枚举,提供了更好的性能,例如(url中的NSURL*url){//code here}aaaaaaa和。。。。有什么例外吗?@MichaelDautermann-Whoops-忘了提一下,我现在已经编辑了我的帖子。@Ben还使用了快速枚举,提供了更好的性能,例如(url中的NSURL*url){//code here}+1给你。。。在Ben编辑之后,我甚至没有时间回答。很好-我很尴尬答案是多么简单!:)@本:您还应该使用
NSURL*url=[NSURL fileURLWithPath:directory]
,这使得
stringbyaddingpercentescapesusingencode
过时了所以简而言之:如果你在URL和字符串中使用“奇怪的字符串操作”,那么你可能做错了:-)+1对你来说。。。在Ben编辑之后,我甚至没有时间回答。很好-我很尴尬答案是多么简单!:)@本:您还应该使用
NSURL*url=[NSURL fileURLWithPath:directory]
,这使得
stringbyaddingpercentescapesusingencode
过时了简言之:如果您在URL和字符串中使用“奇怪的字符串操作”,那么您可能是做错了:-)