簡體   English   中英

Objective C 中的 iOS 屬性觀察者(字符串或字典)

[英]iOS property Observer in Objective C (String or dictionary)

我正在為我的應用程序構建一個屬性觀察器(鍵值觀察)。 理想的情況是監視值(字符串或字典)的奇怪值。 我在 viewDidLoad 中寫了這個

@interface BarScannerViewController () <AVCaptureMetadataOutputObjectsDelegate>
{
    NSMutableDictionary *scanTrackingNumbers;   
}

並在 viewdidload

[scanTrackingNumbers addObserver:self forKeyPath:@"scanTrackingNumber" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];

[scanTrackingNumbers setValue:@"test123455" forKey:@"scanTrackingNumber"];

並實現方法

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{

    if ([keyPath isEqualToString:@"scanTrackingNumber"]){
        NSLog(@"scanTrackingNumber Changed %@",change);
        NSLog(@"scan12335 %@",scanTrackingNumbers);
    }
}

我不知道為什么它不起作用(注意打印到控制台日志)。 代碼可能有什么問題?

嘗試setObject而不是setValue “我不知道這是否重要” 另外,請確保字典已初始化

在添加觀察者之前寫這個

self.scanTrackingNumbers = [[NSMutableDictionary alloc]init];

更簡單的方法

self.scanTrackingNumbers = [NSMutableDictionary dictionary];

最簡單的方法

self.scanTrackingNumbers = @{}

你必須創建字典:-D

scanTrackingNumbers = [NSMutableDictionary new]; 

暫無
暫無

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

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