菜鸟教程小白 发表于 2022-12-12 16:09:51

ios - 区分 UILabel 的元数据时出现问题?


                                            <p><p>我正在获取当前在我的 iOS 应用中播放的广播流的元数据(艺术家姓名、轨道名称)。然而,这个元数据是一体的,即 = “FRANK SINATRA - THEME FROM NEW YORK, NEW YORK”。 </p>

<p>虽然这没问题,但如果我有 2 个不同风格的标签,其中一个写着“FRANK SINATRA”,而另一个写着“THEME FROM NEW YORK, NEW YORK”,那会很好看。</p>

<p>为此,我必须去掉连字符,</p>

<pre><code>    _metaData = infoString;   // THIS IS THE OLD 1- LABEL FORDATA ALL WAY

    // THIS IS THE CODE I AM IMPLEMENTING TO GET RID OF THE HYPHEN

    NSUInteger xxx = .location;


    NSUInteger xxxPlustTwo = xxx + 2;

    NSString *xxxx = ;

    self.artistName.text=xxxx;

    NSString *trackInformation = ;

    self.soundInfoMeta.text = trackInformation;
</code></pre>

<p>就像我能够将 2 分开一样,问题是当电台开始商业化时,我的应用程序会立即崩溃。以下是我在 Xcode 上收到的错误:
<code>***由于未捕获的异常“NSRangeException”而终止应用程序,原因:“***-: Index 2147483647 out of bounds;字符串长度 17'</code></p>

<p>什么可能导致这个问题?</p>

<p>更新:我尝试将 <code>NSUInteger</code> 更改为 <code>double</code> 但这并没有解决问题,这是最新的崩溃日志:</p>

<pre><code>xxxx    NSString *nil 0x00000000
NSObject    NSObject      
isa Class   0x0
xxx double21474836472147483647
xplus   double21474836492147483649
_trackName__NSCFString *@&#34;http://www.181.fm&#34;    0x16d8a890
NSObject    NSObject      
isa Class   __NSCFString    0x39d9a8f8
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可能收到没有连字符的输入,因此连字符的 <code>location</code> 是 <code>NSNotFound</code>,它被定义为 <code>NSIntegerMax</code> , 我相信。您的代码需要对此保持稳健。</p>

<p>这与你现在的做法有点不同,但它应该适用于更多类型的输入:</p>

<pre><code>NSString *infoString = @&#34;ARTIST - TRACK&#34;;
NSArray *infoStringComponents = ;
__block NSString *artistString = @&#34;&#34;;
__block NSString *trackInfoString = @&#34;&#34;;

if ( == 0) {
    // This case should only happen when there&#39;s no info string at all
    artistString = @&#34;Unknown Artist&#34;;
    trackInfoString = @&#34;Unknown Song&#34;;
}
else if ( == 1) {
    // If no hyphens just display the whole string as the track info
    trackInfoString = infoStringComponents;
}
else {
    [infoStringComponents enumerateObjectsUsingBlock:^(NSString *component, NSUInteger index, BOOL *stop) {
      NSString *trimmedComponent = ];
      if (index == 0) {
            artistString = trimmedComponent;
      }
      else {
            NSString *buffer = @&#34;&#34;;
            if ( &gt; 0) {
                buffer = @&#34; - &#34;;
            }
            trackInfoString = ;
      }
    }];
}
</code></pre>

<p>您还可以检查您派生的范围的 <code>location</code> 属性是否等于 <code>NSNotFound</code>,然后假设您无法从中派生艺术家并显示您的 <code>_metaData</code> 变量在适当的标签中。例如:</p>

<pre><code>NSRange hyphenRange = ;
if (hyphenRange.location == NSNotFound) {
    // Display only infoString to the user, unformatted into artist / song info
}
else {
    // Try the same technique you&#39;re attempting now
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 区分 UILabel 的元数据时出现问题?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19827532/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19827532/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 区分 UILabel 的元数据时出现问题?