gpt4 book ai didi

Rubymotion:添加方法的 NoMethodError

转载 作者:行者123 更新时间:2023-12-03 20:25:17 25 4
gpt4 key购买 nike

我向 String 类添加了一个额外的方法。我想稍后使用此方法,但出现 no Method 错误。

class String
def as_file_full_path
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true) [0].stringByAppendingPathComponent(self)
end
end

当我在 REPL 中尝试以下操作时,它会起作用:
 (main)> "image.jpg".as_full_path
=> "/Users/user/Library/Application Support/iPhone Simulator/6.1/Applications/30D186A9-B1C7-4377-AE91-0D14BD3B4A6D/Documents/image.jpg"

但是当我在模型类上调用方法时,它不再起作用:
 (main)> w = Word.first
=> #<Word:0x94d7df0>
(main)> w.filename
=> "2C86A58A-A92A-4A0F-B26C-0F5F583E142C.caf"
(main)> w.filename.class
=> String
(main)> w.filename.as_full_path
2013-02-28 09:17:55.935 project[74283:c07] undefined method `as_full_path' for "2C86A58A-A92A-4A0F-B26C-0F5F583E142C.caf":String (NoMethodError)
=> NoMethodError: undefined method `as_full_path' for "2C86A58A-A92A-4A0F-B26C-0F5F583E142C.caf":String

该模型是使用 NanoStore::Model 实现的。

编辑:

当我克隆模型返回的字符串时,添加的方法存在。
w.filename.dup.as_full_path
=> "/Users/user/Library/Application Support/iPhone Simulator/6.1/Applications/30D186A9-B1C7-4377-AE91-0D14BD3B4A6D/Documents/2C86A58A-A92A-4A0F-B26C-0F5F583E142C.caf"

最佳答案

问题解决了!出于某种原因,扩展 String 类并不总是有效。我认为 NanoStore 出于某种原因不会返回“真正的” ruby 字符串。
通过用“NSString”替换“String”来解决它,所以:

class NSString 
def as_file_full_path
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true) [0].stringByAppendingPathComponent(self)
end
end

关于Rubymotion:添加方法的 NoMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com