我有一个对象将属性定义为NSURL
:
@interface fcpElement : NSObject
@property (copy) NSString* elementName;
@property (copy) NSURL* elementPath;
@property (copy) NSURL* elementParent;
@property () BOOL elementIsHidden;
@property (copy) NSString* elementType;
-(id)initWithName : (NSString*) elementName path: (NSURL*) elementPath parent: (NSURL*) elementParent hiddenValue: (BOOL) elementIsHidden type: (NSString*) elementType;
@end
在我的app控制器中,我创建了一个NSMutableArray
,并使用我的init…
方法将其填充到我的对象中。
然后我有一个按钮,它调用app控制器上的一个方法,通过从数组中的对象调用实例变量来创建一个新的NSURL
,如下所示:
for(currentElement in _finalCutData) {
NSURL *currentElementPath = [currentElement elementPath];
最终我想进行比较以查看这个新网址是否与另一个相同,但如果我执行以下任何操作,我总会收到阻止我的程序的错误:
NSURL *currentElementPathAbsolute = [currentElementPath absoluteURL];
错误: - [__ NSCFString absoluteURL]:无法识别的选择器发送到实例
如果我添加断点,则表示currentElementPath
是无效指针。但是,如果我NSLog
[currentElement elementPath]
我获得了包含在其中的网址。
如何从我的实例变量中获取URL以便我可以使用它?我在我的属性声明中使用了错误的参数类型吗?还是别的什么?
答案 0 :(得分:1)
您的问题很可能就是这个电话:
[currentElement elementPath];
返回一个字符串,而不是一个URL。 -elementPath
如何实施?您是否看到任何编译器警告?
我认为-elementPath
被实现为一个简单的getter方法(可能是@property
)。在这种情况下,错误在于首先存储该值的代码。
您使用ARC还是手动内存管理?如果是后者,你也有机会在这里找到一个僵尸。你没有保留这个URL,所以它被取消分配,后来换成了字符串。
答案 1 :(得分:0)
我很惊讶我似乎可以在这个论坛上提供帮助,因为我是一个初学者,但是NSURL类有你应该使用的初始化方法,比如initFileURLWithPath:你可能不应该覆盖NSURL初始化方法。