警告:从指针生成整数而不进行强制转换

发布于 2024-11-26 08:49:59 字数 2774 浏览 1 评论 0原文

我很困惑为什么会弹出这个警告。我在其他控制器上使用相同的程序,效果完美。

ConditionTableViewController.m:57: 警告:传递“initWithCondition:”的参数 1 从指针生成整数,无需强制转换

使用以下代码

- (void)managedObjectSelected:(NSManagedObject *)managedObject
{
// Load View
Condition *con = (Condition *)managedObject;
ConditionDetailViewController *detail = [[ConditionDetailViewController alloc] initWithCondition:con];

detail.title = [[managedObject valueForKey:@"cave"] valueForKey:@"title"];

self.navigationItem.backBarButtonItem =
[[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                  style: UIBarButtonItemStyleBordered
                                 target:nil
                                 action:nil] autorelease];

[self.navigationController pushViewController:detail animated:YES];
[detail release];
}

在ConditionDetailViewController.h中

- (id)initWithCondition:(Condition *)aCondition;

这里“con”的控制台输出

2011-07-26 11:03:08.485 CaveConditions[10631:f203] <NSManagedObject: 0xe6628e0> (entity: Condition; id: 0xe6608b0 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Condition/p149> ; data: {
    cave = "0x67486e0 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Cave/p7>";
    ccId = 678;
    comment = "";
    diveDate = 1286830059;
    flow = "0xe668270 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Flow/p1>";
    imageURL = "orbe_doof.jpg";
    insertDate = nil;
    ip = "xxx.xxx.xxx.xxx";
    line = "0xe668280 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Line/p1>";
    percolation = "0xe668290 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Percolation/p5>";
    sediment = "0xe6682a0 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Sediment/p2>";
    temperature = 13;
    userMail = "[email protected]";
    username = "Hans K...";
    visibility = "0xe6682b0 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Visibility/p7>";
})

根据要求包括

ConditionTableViewController.h

#import "CellTableViewController.h"
#import "Cave.h"

ConditionTableViewController.m(其中调用 ManagedObjectSelected 方法)

#import "ConditionTableViewController.h"
#import "ConditionDetailViewController.h"

ConditionDetailViewController.h

#import <UIKit/UIKit.h>
#import "Condition.h"
#import <QuartzCore/QuartzCore.h>

ConditionDetailViewController.m

#import "ConditionDetailViewController.h"
#import "DataProcessor.h"
#import "PhotoViewController.h"

I am quite puzzled why this warning pops up. I use the same procedure on other controllers where it works perfectly.

ConditionTableViewController.m:57: warning: passing argument 1 of 'initWithCondition:' makes integer from pointer without a cast

With the following code

- (void)managedObjectSelected:(NSManagedObject *)managedObject
{
// Load View
Condition *con = (Condition *)managedObject;
ConditionDetailViewController *detail = [[ConditionDetailViewController alloc] initWithCondition:con];

detail.title = [[managedObject valueForKey:@"cave"] valueForKey:@"title"];

self.navigationItem.backBarButtonItem =
[[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                  style: UIBarButtonItemStyleBordered
                                 target:nil
                                 action:nil] autorelease];

[self.navigationController pushViewController:detail animated:YES];
[detail release];
}

In ConditionDetailViewController.h

- (id)initWithCondition:(Condition *)aCondition;

Here the console output of "con"

2011-07-26 11:03:08.485 CaveConditions[10631:f203] <NSManagedObject: 0xe6628e0> (entity: Condition; id: 0xe6608b0 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Condition/p149> ; data: {
    cave = "0x67486e0 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Cave/p7>";
    ccId = 678;
    comment = "";
    diveDate = 1286830059;
    flow = "0xe668270 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Flow/p1>";
    imageURL = "orbe_doof.jpg";
    insertDate = nil;
    ip = "xxx.xxx.xxx.xxx";
    line = "0xe668280 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Line/p1>";
    percolation = "0xe668290 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Percolation/p5>";
    sediment = "0xe6682a0 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Sediment/p2>";
    temperature = 13;
    userMail = "[email protected]";
    username = "Hans K...";
    visibility = "0xe6682b0 <x-coredata://368AFBD3-2C66-4ED7-977D-AB8EED8BB577/Visibility/p7>";
})

Includes as requested

ConditionTableViewController.h

#import "CellTableViewController.h"
#import "Cave.h"

ConditionTableViewController.m (Where the managedObjectSelected method gets called)

#import "ConditionTableViewController.h"
#import "ConditionDetailViewController.h"

ConditionDetailViewController.h

#import <UIKit/UIKit.h>
#import "Condition.h"
#import <QuartzCore/QuartzCore.h>

ConditionDetailViewController.m

#import "ConditionDetailViewController.h"
#import "DataProcessor.h"
#import "PhotoViewController.h"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

坦然微笑 2024-12-03 08:49:59

initWithCondition: 是 Foundation 框架中 NSConditionLock 类的一个方法,它接受一个整数。我认为 Xcode 以某种方式混淆了两个类中的符号名称 initWithCondition:,并且使用了错误的版本。如果您的代码正确,包括在每个文件中导入正确的标头,则它可能是错误的索引或预编译标头。尝试从“管理器”窗口的“项目”部分删除项目的派生数据,然后重建项目。

initWithCondition: is a method of the NSConditionLock class in the Foundation framework that takes an integer. I think Xcode has somehow confused the symbol names initWithCondition: from two classes, and is using the wrong version. If your code is correct, including importing the correct headers in every file, it's probably a faulty index or precompiled header. Try deleting the derived data for the project from the "Projects" section of the "Organizer" window, and rebuilding the project.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文