在URL的NSArray中循环-崩溃-iOS
我希望通过我的NSArray*URL循环-对每个对象进行一些字符串调整 但是,一旦它进入For循环并尝试调整NSString*对象,就会抛出异常 你知道我为什么被难住了吗在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
- (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和字符串中使用“奇怪的字符串操作”,那么您可能是做错了:-)