Collection element of type NSInteger is not an Objective-C Object

NSDictionary *dictionary = @{
    @"beacon": sighting.beacon.name,
    @"rssi": sighting.RSSI,
    @"tim
    };

sighting.RSSI is a NSInteger aka long, you can't cast it, you need to box it in an NSNumber

NSDictionary *dictionary = @{
    @"beacon": sighting.beacon.name,
    @"rssi": @(sighting.RSSI),
    @"tim
    };