2017-11-28 8 views
-2

私は[urlString componentsSeperatedByString:@ "?"] [0]とは何ですか?スウィフトでの意味ですか?

NSString * fileName = [self cachedFileNameForKey:[urlString componentsSeparatedByString:@"?"][0]]; 

は、このコードから何を意味するのか全くわかりません。私は素早くスウィフトに書いていますので、この表記は私のためにちょっと混乱しています。二重[]表記はどういう意味ですか? 3D配列?私の部分に

+ (AVPlayerItem *)localDownloadedVideoFromUrl:(NSURL *)url { 
     NSString * urlString = url.absoluteString; 
     NSString * fileName = [self cachedFileNameForKey:[urlString componentsSeparatedByString:@"?"][0]]; 
     TWRDownloadManager * manager = [TWRDownloadManager sharedManager]; 
     if ([manager fileExistsWithName:fileName]) { 
      AVPlayerItem * item = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:[manager localPathForFile:fileName]]]; 
      return item; 
     } 
     return [NSNull null]; 
    } 
+0

[0]は0番目のインデックスからオブジェクトを取り出すようです。 –

+0

URLResponseのsuggestedFilenameプロパティからサーバーからファイル名を取得する必要があります –

答えて

-1

ああので間違いは、私はこの方法-cacheFileNameForKey:が何をしているのか見ていなかったということです。

+ (nullable NSString *)cachedFileNameForKey:(nullable NSString *)key { 
    const char *str = key.UTF8String; 
    if (str == NULL) { 
     str = ""; 
    } 
     unsigned char r[CC_MD5_DIGEST_LENGTH]; 
     CC_MD5(str, (CC_LONG)strlen(str), r); 
     NSString *filename = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%@", 
         r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], 
         r[11], r[12], r[13], r[14], r[15], [key.pathExtension isEqualToString:@""] ? @"" : [NSString stringWithFormat:@".%@", key.pathExtension]]; 

     return filename; 
} 

一時的なムービーファイルのファイル名を生成する関数に使用されていると思います。 Objective-Cの中

1
スウィフト

var urlString: String = "Know someone who can answer? Share a link to this" // Example string or url.absoluteString 

let fileName = urlString.components(separatedBy: "?") 
print(fileName) 

let string1 = fileName[0] 
let string2 = fileName[1] 

希望意志参考になりまし

2

[]アクセスアレイに使用するだけでなく、メソッドを呼び出すために使用されていないだけ。驚くべきことですね。一般に

[xxx someMethod]; 

と等価である:迅速に

xxx.someMethod() 

。だからここ

[urlString componentsSeparatedByString:@"?"][0] 

urlString.components(separatedBy: "?")[0] // "[0]" can also be replaced by ".first", which is safer. 

は、これは、パラメータとしてcachedFileNameForKeyに渡されることを意味します。

関連する問題