好的,我对Obj-C和iOS完全陌生。我只是在尝试iOS上的Pebble手表的DataLogging示例,并更改一些内容来记录加速度计读数。
我有这个功能:
- (BOOL)dataLoggingService:(PBDataLoggingService *)service hasByteArrays:(const UInt8 *const)data numberOfItems:(UInt16)numberOfItems forDataLoggingSession:(PBDataLoggingSessionMetadata *)sessionMetadata{
//NSString *log = [NSString stringWithFormat:@"%s", data]; <-- this line compiles but display garbage on the view. So I try to use the line below.
NSString *log = [[NSString alloc] initWithData:(NSData *)data encoding:NSASCIIStringEncoding]; <-- this line gave build error as in the post title
[self addLogLine:log];
// We consumed the data, let the data logging service know:
return YES;
}
因此,任何帮助将不胜感激。谢谢。
首先是您的错误:它告诉您不能使用指向非Objective-C对象的指针-您有一个指针UInt8
-只需将其转换为指向Objective-C对象的指针-NSData
在您的情况下为ARC( (Objective-C内存收集器)不知道如何处理结果。如果可能的话,可以通过桥接强制转换来告诉ARC如何处理它。然而,在你的情况下,它不可能的,因为你不能只投了UInt8 *
一个NSData *
-两指完全不同的事情。
猜测您的方法被传递了一个指向字节序列的指针(hasByteArrays:
)和该序列中的字节数(numberOfItems
),如果正确,则您所追求的方法是initWithBytes:length:encoding:
,该方法直接采用一个指向字节序列的指针。例如:
NSString *log = [[NSString alloc] initWithBytes:data
length:numberOfItems
encoding:NSASCIIStringEncoding];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句