1

我一直在尝试使用 [[UIDevice currentDevice] ...] 和 NSLog 记录设备参数。尽管尝试了不同的方法,但我总是得到相同的警告。

我得到的警告是:

Passing argument 1 of 'NSLog' from incompatible pointer type

这是我所有的尝试:

1:

NSString *UDID = [[UIDevice currentDevice] uniqueIdentifier];
    NSString *deviceName = [[UIDevice currentDevice] name];
    NSString *deviceModel = [[UIDevice currentDevice] model];

    NSLog("\nDevice UDID: %@\nDevice Name: %@\nDevice Mode:%@\n",UDID, deviceName, deviceModel);

2:

NSString *UDID = (NSString*)[[UIDevice currentDevice] uniqueIdentifier];
    NSString *deviceName = (NSString*)[[UIDevice currentDevice] name];
    NSString *deviceModel = (NSString*)[[UIDevice currentDevice] model];

    NSLog("\nDevice UDID: %@\nDevice Name: %@\nDevice Mode:%@\n",UDID, deviceName, deviceModel);

3:

NSString *UDID = [NSString stringWithFormat:[[UIDevice currentDevice] uniqueIdentifier]];
    NSString *deviceName = [NSString stringWithFormat:[[UIDevice currentDevice] name]];
    NSString *deviceModel = [NSString stringWithFormat:[[UIDevice currentDevice] model]];

    NSLog("\nDevice UDID: %@\nDevice Name: %@\nDevice Mode:%@\n",UDID, deviceName, deviceModel);

4:

NSLog("\nDevice UDID: %@\nDevice Name: %@\nDevice Mode:%@\n",[[UIDevice currentDevice] uniqueIdentifier], [[UIDevice currentDevice] name], [[UIDevice currentDevice] model]);

谁能帮我吗?谢谢!

4

3 回答 3

6

您需要使用 NSString 作为 NSLog 的第一个参数,例如

NSLog(@"\nDevice UDID: %@\nDevice Name: %@\nDevice Mode:%@\n",UDID, deviceName, deviceModel);

注意字符串开头之前的“@”

于 2011-05-23T18:20:11.400 回答
2

NSLog将 NSString 作为格式字符串,而不是const char*. 在你的字符串前面加上@.

IE:

NSLog(@"\nDevice UDID: %@\nDevice Name: %@\nDevice Mode:%@\n", ....
于 2011-05-23T18:20:04.870 回答
0

NSLog需要一个NSString作为其格式参数。你应该这样打电话NSLog

NSLog(@"\nDevice UDID: %@", [[UIDevice currentDevice] uniqueIdentifier]);

请注意开头的“@” - 这是一个常量NSString引用。您正在使用裸 C 字符串。

于 2011-05-23T18:20:45.893 回答