簡體   English   中英

NSPredicate不適用於CLCircularRegions的過濾數組

[英]NSPredicate not working on filtering array of CLCircularRegions

我想查看我的區域是否已經受到監視。 為此,我得到monitoredRegions從我CLLocationManager ,然后通過其標識符一樣使用謂詞過濾器:

NSArray *regionsBeingMonitored = [_sharedLocationManager.monitoredRegions allObjects];
NSPredicate *predicateForRegionId = [NSPredicate predicateWithFormat:@"identifier == %@", store.storeID];

CLRegion *someRegion = [[regionsBeingMonitored filteredArrayUsingPredicate:predicateForRegionId] firstObject];

這是控制台的輸出:

Printing description of regionsBeingMonitored:
<__NSArrayI 0x600000280fa0>(
CLCircularRegion (identifier:'486', center:<+18.45381450,+73.79211000>, radius:100.00m),
CLCircularRegion (identifier:'466', center:<+35.54023330,-97.52949170>, radius:100.00m),
CLCircularRegion (identifier:'469', center:<+35.54023330,-97.52949170>, radius:100.00m),
CLCircularRegion (identifier:'485', center:<+18.56226900,+73.91274500>, radius:100.00m),
CLCircularRegion (identifier:'475', center:<+18.52043030,+73.85674370>, radius:100.00m),
CLCircularRegion (identifier:'468', center:<+0.00000000,+0.00000000>, radius:100.00m),
CLCircularRegion (identifier:'484', center:<+18.55905150,+73.91125600>, radius:100.00m),
CLCircularRegion (identifier:'467', center:<+35.54023330,-97.52949170>, radius:100.00m)
)
Printing description of predicateForRegionId:
identifier == 469

但是謂詞總是返回空數組。 有人可以幫忙嗎?

我已經用store.storeID字符串常量的形式替換了store.storeID

NSPredicate *predicateForRegionId = [NSPredicate predicateWithFormat:@"identifier == %@", @"486"];

一切正常。 您的storeID是一個NSNumber 因此,你有

predicateForRegionId的打印說明:
標識符== 469

作為輸出而不是(請注意雙引號)

predicateForRegionId的打印說明:
標識符==“ 469”

如果將數字與字符串進行比較, NSPredicate始終提供false。 您應該將storeID轉換為字符串:

NSPredicate *predicateForRegionId = [NSPredicate predicateWithFormat:@"identifier == %@",
    [store.storeID description]];

嘗試NSPredicate *predicateForRegionId = [NSPredicate predicateWithFormat:@"%K == %@", @"identifier", store.storeID];

由於“標識符”是一個屬性,因此您需要將其作為鍵傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM