1

ライブラリに関するデータを格納する独自のクラスを作成してから、各オブジェクトをNSArrayに格納しようとしています。

私のインターフェース:

#import <Foundation/Foundation.h>

@interface LibraryInfo : NSObject
{

NSString* name;
NSString* address;
NSString* link;
NSString* coordinates;

}

- (NSString*) getName;
- (NSString*) getAddress;
- (NSString*) getLink;
- (NSString*) getCoordinates;

- (void) setName: (NSString*)input;
- (void) setAddress: (NSString*)input;
- (void) setLink: (NSString*)input;
- (void) setCoordinates: (NSString*)input;

@end

私の実装:

#import "LibraryInfo.h"

@implementation LibraryInfo

- (void) setName: (NSString*)input
{
name = input;
}

- (void) setAddress: (NSString*)input
{
address = input;
}

- (void) setLink: (NSString*)input
{
link = input;
}

- (void) setCoordinates: (NSString*)input
{
coordinates = input;
}

- (NSString*) getName {
return name;
}

- (NSString*) getAddress {
return address;
}

- (NSString*) getLink {
return link;
}

- (NSString*) getCoordinates {
return coordinates;
}

@end

次のように、各オブジェクトをNSArrayに記述して保存します。

LibraryInfo *library = [[LibraryInfo alloc] init];
[library setName:( ( name != nil && name.length > 0 ) ? name : @"No Name" )];
[library setAddress:( ( address != nil && address.length > 0 ) ? address : @"No Address" )];
[library setLink:( ( link != nil && link.length > 0 ) ? link : @"No Link" )];
[library setCoordinates:( ( coordinate != nil && coordinate.length > 0 ) ? coordinate : @"No Coordinates" )];
    
[libraries addObject: library];

ここで、「ライブラリ」はNSArrayです。

次に、次のように値を読み取ろうとします。

cell.textLabel.text = [[ libraries objectAtIndex:indexPath.row ] getName ];
cell.detailTextLabel.text = [[ libraries objectAtIndex:indexPath.row ] getAddress ];

値の設定に関係している可能性があるか、値が適切に保存または保持されていない可能性がありますが
、アプリが「クラッシュ」して一時停止すると、「setName」メソッドによって次のエラーとマーカーが表示されます。

self    LibraryInfo *const  0x068a1760
input   NSString *  0x068a3550
name    NSString *  0x00000000

これを修正するにはどうすればよいですか?Xcode 4.3を使用しているので、リリース/保持は必要ありません。

4

1 に答える 1

4

プロパティを宣言する必要があります。IVars は期待どおりにデータを保存しません

LibraryInfo.h

@interface LibraryInfo : NSObject

@property (nonatomic, strong) NSString* name;
@property (nonatomic, strong) NSString* address;
@property (nonatomic, strong) NSString* link;
@property (nonatomic, strong) NSString* coordinates;

LibraryInfo.m

@implementation LibraryInfo
@synthesize name;
@synthesize address;
@synthesize link;
@synthesize coordinates;

その後、ライブラリの作成は簡単になります

LibraryInfo *library = [[LibraryInfo alloc] init];
library.name = (name.length > 0 ? name : @"No Name");
library.address = (address.length > 0 ? address : @"No Address")
library.link = (link.length > 0 ? link : @"No Link")
library.coordinates = (coordinates.length > 0 ? coordinates : @"No Coordinates")

次に、TableView セルで。

cell.textLabel.text = [libraries objectAtIndex:indexPath.row].name;
cell.detailTextLabel.text = [libraries objectAtIndex:indexPath.row].address;
于 2012-05-09T23:16:10.330 に答える