我只是想输出NSArray中保存的值,因为我想看看它有多大。但是,我对iOS开发和对象C都很新,所以我希望有人可以帮助我。
阵列充满了以下调用:
-(void)beaconManager:(ESTBeaconManager *)manager
didRangeBeacons:(NSArray *)beacons
inRegion:(ESTBeaconRegion *)region
{
if([beacons count] > 0)
{
}
}
我一直在使用嵌套if语句调用以下行,但每次调用它时,系统崩溃:
NSLog([beacons count]);
有人可以告诉我如何显示此数组中的值以及如何访问它们吗?
答案 0 :(得分:1)
您的NSLog语句应该是错误的:
NSLog(@"%d", [beacons count]);
答案 1 :(得分:1)
NSLog(@"value stored in array are %d", [beacons count]);
答案 2 :(得分:0)
尝试这样的事情
for (CLBeacon b in beacons)
{
NSLog(@"uuid: %@", b.proximyUUID);
}
答案 3 :(得分:0)
虽然其他答案在技术上是正确的,但他们没有做太多解释为什么他们是正确的以及提问者做错了什么。
查看函数声明:NSLog(NSString *format, ...)
NSLog()
接受两个参数,格式字符串和变量参数列表(...
),它们在格式字符串中使用。
格式字符串是使用格式说明符(占位符)将值替换为字符串的文字字符串。例如:@"Hello my name is %@"
。这里,%@
用作对象的格式说明符,并伴随着在变量参数列表中传入的名称变量。
完整的函数调用看起来像NSLog(@"Hello my name is %@", myName);
格式说明符和变量参数列表按从左到右的顺序处理。
其他数据类型还有其他格式说明符(还有更多,请查看文档):
%d
- 整数%f
- 花车%@
- 对象您之前的代码崩溃的原因是因为您将NSUInteger
(来自-count
的返回值)作为参数传递给期望字符串的函数。字符串变量是ObjC中的指针,因此崩溃发生是因为代码试图将整数作为指针访问(您可以在文档中阅读更多内容)。
可以在https://developer.apple.com/programs/ios/gettingstarted/找到适合iOS和Objective-C的良好入门指南,并且一如既往地阅读Xcode中可访问的文档!
答案 4 :(得分:0)
NSMutableString * retStr = [NSMutableString string];
NSInteger n = [beacons count];
while (n>=1000) {
[retStr appendString:@"M"];
n-=1000;
}
if (n>=900) {
[retStr appendString:@"CM"];
n-=900;
}
if (n>=500) {
[retStr appendString:@"D"];
n-=500;
}
if (n>=400) {
[retStr appendString:@"CD"];
n-=400;
}
while (n>=100) {
[retStr appendString:@"C"];
n-=100;
}
if (n>=90) {
[retStr appendString:@"XC"];
n-=90;
}
if (n>=50) {
[retStr appendString:@"L"];
n-=50;
}
if (n>=40) {
[retStr appendString:@"XL"];
n-=40;
}
while (n>=10) {
[retStr appendString:@"X"];
n-=10;
}
if (n>=9) {
[retStr appendString:@"IX"];
n-=9;
}
if (n>=5) {
[retStr appendString:@"V"];
n-=5;
}
if (n>=4) {
[retStr appendString:@"IV"];
n-=4;
}
while (n) {
[retStr appendString:@"I"];
n--;
}
NSLog(@"%@",retStr);