Ios 来自NSData的文件路径
我有从文件路径加载的NSData。然后数据被传递,我需要数据来源的文件路径Ios 来自NSData的文件路径,ios,cocoa,nsdata,Ios,Cocoa,Nsdata,我有从文件路径加载的NSData。然后数据被传递,我需要数据来源的文件路径 除了将filePath作为一个额外参数传递之外,最简单的方法是什么?将这两种方法都包装在表示文件的容器对象中,例如 @interface File : NSObject @property (strong) NSData *fileContents; @property (copy) NSString *filePath; // perhaps, even a nice constructor to fill the
除了将filePath作为一个额外参数传递之外,最简单的方法是什么?将这两种方法都包装在表示文件的容器对象中,例如
@interface File : NSObject
@property (strong) NSData *fileContents;
@property (copy) NSString *filePath;
// perhaps, even a nice constructor to fill these properties
- (id)initWithFilePath:(NSString *)filePath;
@end
将两者包装在表示文件的容器对象中,例如
@interface File : NSObject
@property (strong) NSData *fileContents;
@property (copy) NSString *filePath;
// perhaps, even a nice constructor to fill these properties
- (id)initWithFilePath:(NSString *)filePath;
@end
虽然您可能应该创建包含所需数据的单独结构或类,但也可以向NSData添加关联 为了方便,您甚至可以将其作为NSData上的一个类别来执行。。。假设您正在使用字符串。。。如果使用URL,请使用NSURL。。。这样,您的其他代码都不需要更改。。。您仍然可以像以前一样使用NSData,使用新添加的属性 注意:使用或不使用类别有很多原因。我假设您将根据您的代码情况做出最佳选择,并将关于类别的好/坏使用的争论推迟给其他人 试试这样的 NSData+AssociatedFilePath.h
#import <Foundation/Foundation.h>
@interface NSData (AssociatedFilePath)
@property (nonatomic, strong) NSString *filePath;
@end
每当需要NSData对象的文件路径时
NSString *filePath = myNSDataObject.filePath;
由于它是一个类别,您可以在任何NSData对象上使用它,如果从未设置文件路径,它将只返回nil
这是一个通用的解决方案,适用于任何需要向现有类添加行为的时候,当然要遵循最佳使用类别的适当实践。虽然您可能应该创建一个包含所需数据的单独结构或类,但您也可以向NSData添加关联 为了方便,您甚至可以将其作为NSData上的一个类别来执行。。。假设您正在使用字符串。。。如果使用URL,请使用NSURL。。。这样,您的其他代码都不需要更改。。。您仍然可以像以前一样使用NSData,使用新添加的属性 注意:使用或不使用类别有很多原因。我假设您将根据您的代码情况做出最佳选择,并将关于类别的好/坏使用的争论推迟给其他人 试试这样的 NSData+AssociatedFilePath.h
#import <Foundation/Foundation.h>
@interface NSData (AssociatedFilePath)
@property (nonatomic, strong) NSString *filePath;
@end
每当需要NSData对象的文件路径时
NSString *filePath = myNSDataObject.filePath;
由于它是一个类别,您可以在任何NSData对象上使用它,如果从未设置文件路径,它将只返回nil
这是一个通用的解决方案,适用于任何需要向现有类添加行为的时候,当然,要遵循最佳使用类别的适当实践。虽然这是一种有效的方法,并且可以很好地使用新的关联对象运行时调用,但我认为您应该只在确实需要时才这样做,它不是特别优雅。一个简单的容器类,比如@joerick建议的容器类,在这里更合适,它是封装模型对象的一种更好的方法,并且有利于代码的维护。虽然这是一种有效的方法,并且很好地利用了新的关联对象运行时调用,但我认为您应该只在确实需要的时候才这样做,它不是特别优雅。一个简单的容器类,比如@joerick建议的容器类,在这里更合适,它是封装模型对象的一种更好的方法,并且有利于代码的维护。