0

NSManagedObjectから文字列値を取得しようとすると、これが取得されます

<Entity: 0x1e043140> (entity: Entity; id: 0x1e041c30 <x-coredata://8F48C331-B879-47B4-B257-4802A13ED12C/Entity/p4> ; data: {
number = "<UITextField: 0x1d8b7cc0; frame = (159 183; 161 30); text = 'test'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x1d8b3c10>; layer = <CALayer: 0x1d892a30>> : ";
})

これから文字列を取得するにはどうすればよいですか(text ='test';)

これを使ってオブジェクトを取得します

NSString *rowValue = [self.fetchedResultsController objectAtIndexPath:indexPath];

わかりました、nsmanagedオブジェクトはこれであり、uitableviewセルをその文字列に設定します

NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];

cell.textLabel.text = [[object valueForKey:@"number"] description];

それが何をしているのかを示しているのは、ご覧のとおり、説明を取得しているからです。テキスト値を返すプロパティが見つからないので、誰かがその方法を知っていますか?ありがとう。

4

3 に答える 3

1

管理対象オブジェクトに値を格納すると、すでにエラーが発生していると思います。おそらくあなたは次のようなことをします

[myObject setValue:[aTextField description] forKey:@"number"]

テキストフィールドのテキストコンテンツを保存する代わりに:

[myObject setValue:[aTextField text] forKey:@"number"]

更新:コメントを書き込むと、管理対象オブジェクトの値は次のように保存されます

NSString *string = [NSString stringWithFormat:@"%@ : %@", self.numtext, self.comtext];
[newManagedObject setValue:string forKey:@"number"];

ただし、それ自体%@の形式は、テキストの内容ではなく、テキストフィールドの説明に拡張されます。したがって、すでにのように見えますUITextField string

"<UITextField: 0x1d8b7cc0; frame = (159 183; 161 30); text = 'test'; .... "

この文字列は、管理対象オブジェクトに「数値」属性として格納されます。代わりに、次のコードを使用する必要があります。

NSString *string = [NSString stringWithFormat:@"%@ : %@", self.numtext.text, self.comtext.text];
[newManagedObject setValue:string forKey:@"number"];

これをテストするときは、既存の間違ったエントリを取り除くために古いデータベースを削除する必要があることに注意してください。

于 2013-02-09T22:48:56.907 に答える
0
NSString *str = managedObject.objectID.URIRepresentation.absoluteString
于 2014-06-18T08:50:04.493 に答える
-1

あなたは書くべきです:

Entity *entity = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSString *rowValue = entity.text;

編集:

わかりました、それから試してみてくださいobject.number.text;

于 2013-02-09T22:39:31.143 に答える