所以這是我的問題。我試圖歸檔一個對象數組,當我將它們取消歸檔時,雖然count是相同的,並且根對象內的對象是相同的,但它在未歸檔的數組中找不到指定的對象。存檔/取消存檔時是否修改了對象?
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"self.vendors.count = %d", self.vendors.count);
[NSKeyedArchiver archiveRootObject:self.vendors toFile:[self vendorsArchivePath]];
NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:[self
vendorsArchivePath]];
NSLog(@"array.count = %d", array.count);
NSLog(@"%d", [self.vendors indexOfObject:self.vendors[indexPath.row]]);
NSLog(@"%d", [array indexOfObject:self.vendors[indexPath.row]]);
}
爲了排除故障;我有兩個數組的列表和底部的計數和NSLog中每個數組中的對象的索引。
這裏是日誌...
2014-04-27 12:53:04.813 Inventory[12272:907] self.vendors.count = 5
2014-04-27 12:53:04.827 Inventory[12272:907] array.count = 5
2014-04-27 12:53:04.828 Inventory[12272:907] 0
2014-04-27 12:53:04.831 Inventory[12272:907] 2147483647
所以我的問題是:爲什麼在世界上是最後的NSLog沒有找到相同的對象,我存檔,並在不被發現在同樣的功能未歸檔數組?對象是否在存檔和未存檔時進行修改?或者還有其他的東西我失蹤了。
編輯:這是我的vendor.h和vendor.m文件:
//vendor.h
#import <Foundation/Foundation.h>
@interface SELVendor : NSObject <NSCoding>
@property (nonatomic) NSMutableArray *itemsAvailable;
@property (nonatomic) NSString *name;
@property (nonatomic) NSString *phoneNumber;
@property (nonatomic) NSString *email;
@property (nonatomic) NSString *vendorKey;
@end
//vendor.m
#import "SELVendor.h"
@implementation SELVendor
-(instancetype) init {
self = [super init];
if (self) {
self.name = @"Unnamed Vendor";
self.itemsAvailable = [[NSMutableArray alloc] init];
NSUUID *uuid = [[NSUUID alloc] init];
self.vendorKey = [uuid UUIDString];
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeObject:self.itemsAvailable forKey:@"itemsAvailable"];
[aCoder encodeObject:self.phoneNumber forKey:@"phoneNumber"];
[aCoder encodeObject:self.email forKey:@"email"];
[aCoder encodeObject:self.vendorKey forKey:@"vendorKey"];
}
-(instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super init];
if (self) {
self.name = [aDecoder decodeObjectForKey:@"name"];
self.itemsAvailable = [aDecoder decodeObjectForKey:@"itemsAvailable"];
self.phoneNumber = [aDecoder decodeObjectForKey:@"phoneNumber"];
self.email = [aDecoder decodeObjectForKey:@"email"];
self.vendorKey = [aDecoder decodeObjectForKey:@"vendorKey"];
}
return self;
}
@end
什麼樣的對象是「供應商」?你在那個對象中實現了'isEqual:'嗎? –